Game Development Wiki gamedevwiki https://gamedev.miraheze.org/wiki/Main_Page MediaWiki 1.40.1 case-sensitive Media Special Talk User User talk Game Development Wiki Game Development Wiki talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Campaign Campaign talk Module Module talk Tutorial Tutorial talk Template:Mbox/styles.css 10 79 196 2022-02-08T04:13:27Z meta>Agent Isai 0 Imported from [[mw:|MediaWiki.org]] sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } 70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31 Template:Documentation 10 14 31 2022-09-30T01:43:37Z dev>MacFan4000 0 4 revisions imported from [[:meta:Template:Documentation]]: this is useful and was on templateiwki wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 9885bb4fa99bf3d5b960e73606bbb8eed3026877 32 31 2023-02-08T01:57:06Z BlindCartographer 2 1 revision imported from [[:dev:Template:Documentation]] wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 9885bb4fa99bf3d5b960e73606bbb8eed3026877 49 32 2023-02-08T02:01:22Z BlindCartographer 2 wikitext text/x-wiki {{#invoke:Documentation|main|_content={{ {{#invoke:Documentation|contentTitle}}}}}}<noinclude>[[Category:Templates]]</noinclude> 239460698a2505ac439e481dbadc3613935a1b0e Module:Arguments 828 16 35 2022-09-30T02:32:01Z dev>Pppery 0 24 revisions imported from [[:wikipedia:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 36 35 2023-02-08T01:57:41Z BlindCartographer 2 1 revision imported from [[:dev:Module:Arguments]] Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Documentation 828 22 47 2022-09-30T02:36:08Z dev>Pppery 0 Pppery moved page [[Module:Documentation/2]] to [[Module:Documentation]] without leaving a redirect Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 78cc3a78f2b5dbb267fa16027c0800a22dbd3c42 48 47 2023-02-08T01:59:49Z BlindCartographer 2 1 revision imported from [[:dev:Module:Documentation]] Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end return ugsub(msg, '$([1-9][0-9]*)', getMessageVal) end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end -- 'documentation-toolbar' return '<span class="' .. message('toolbar-class') .. '">(' .. table.concat(ret, ' &#124; ') .. ')</span>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user --]] local env = p.getEnvironment(args) local root = mw.html.create() root :tag('div') -- 'documentation-container' :addClass(message('container')) :attr('role', 'complementary') :attr('aria-labelledby', args.heading ~= '' and 'documentation-heading' or nil) :attr('aria-label', args.heading == '' and 'Documentation' or nil) :newline() :tag('div') -- 'documentation' :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') -- 'documentation-clear' :addClass(message('clear')) :done() :newline() :done() :wikitext(p._endBox(args, env)) :done() :wikitext(p.addTrackingCategories(env)) -- 'Module:Documentation/styles.css' return mw.getCurrentFrame():extensionTag ( 'templatestyles', '', {src=cfg['templatestyles'] }) .. tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title -- objects and other namespace- or path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- -- Data includes: -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the -- same as the subject namespace. However, pages in the Article, File, -- MediaWiki or Category namespaces must have their /doc, /sandbox and -- /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', { page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create][purge] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink, purgeLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle else -- 'documentation-heading' data.headingClass = message('main-div-heading-class') end -- Data for the [view][edit][history][purge] or [create] links. if links then -- 'mw-editsection-like plainlinks' data.linksClass = message('start-box-link-classes') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox -- 'documentation-startbox' :addClass(message('start-box-class')) :newline() :tag('span') :addClass(data.headingClass) :attr('id', 'documentation-heading') :cssText(data.headingStyleText) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the link box. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" end end local box = mw.html.create('div') -- 'documentation-metadata' box:attr('role', 'note') :addClass(message('end-box-class')) -- 'plainlinks' :addClass(message('end-box-plainlinks')) :wikitext(text) :done() return '\n' .. tostring(box) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Help:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p 78cc3a78f2b5dbb267fa16027c0800a22dbd3c42 Module:Yesno 828 18 39 2022-10-01T17:25:37Z dev>Pppery 0 Pppery moved page [[Module:Yesno/2]] to [[Module:Yesno]] without leaving a redirect Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc 40 39 2023-02-08T01:58:59Z BlindCartographer 2 1 revision imported from [[:dev:Module:Yesno]] Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end f767643e7d12126d020d88d662a3dd057817b9dc Module:No globals 828 17 37 2022-10-01T17:28:48Z dev>Pppery 0 Pppery moved page [[Module:No globals/2]] to [[Module:No globals]] without leaving a redirect Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a 38 37 2023-02-08T01:58:47Z BlindCartographer 2 1 revision imported from [[:dev:Module:No_globals]] Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Documentation/config 828 21 45 2022-10-01T17:37:53Z dev>Pppery 0 Pppery moved page [[Module:Documentation/config/2]] to [[Module:Documentation/config]] without leaving a redirect Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 46 45 2023-02-08T01:59:36Z BlindCartographer 2 1 revision imported from [[:dev:Module:Documentation/config]] Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[w:Wikipedia:Template documentation|documentation]] is [[mw:Help:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[mw:Extension:Scribunto/Lua reference manual|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['templatestyles'] -- The name of the TemplateStyles page where CSS is kept. -- Sandbox CSS will be at Module:Documentation/sandbox/styles.css when needed. cfg['templatestyles'] = 'Module:Documentation/styles.css' -- cfg['container'] -- Class which can be used to set flex or grid CSS on the -- two child divs documentation and documentation-metadata cfg['container'] = 'documentation-container' -- cfg['main-div-classes'] -- Classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'documentation' -- cfg['main-div-heading-class'] -- Class for the main heading for templates and modules and assoc. talk spaces cfg['main-div-heading-class'] = 'documentation-heading' -- cfg['start-box-class'] -- Class for the start box cfg['start-box-class'] = 'documentation-startbox' -- cfg['start-box-link-classes'] -- Classes used for the [view][edit][history] or [create] links in the start box. -- mw-editsection-like is per [[Wikipedia:Village pump (technical)/Archive 117]] cfg['start-box-link-classes'] = 'mw-editsection-like plainlinks' -- cfg['end-box-class'] -- Class for the end box. cfg['end-box-class'] = 'documentation-metadata' -- cfg['end-box-plainlinks'] -- Plainlinks cfg['end-box-plainlinks'] = 'plainlinks' -- cfg['toolbar-class'] -- Class added for toolbar links. cfg['toolbar-class'] = 'documentation-toolbar' -- cfg['clear'] -- Just used to clear things. cfg['clear'] = 'documentation-clear' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg d70e8b1402a2bbe08a1fef4b75d743e661af0c95 Module:Message box 828 15 33 2022-10-21T19:39:49Z dev>Pppery 0 These can just go, the first for being very Wikipedia-specific, and the second for being almost impossible to import properly Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local templatestyles = 'Module:Message box/styles.css' -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) and not self.isSmall then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end local function templatestyles(frame, src) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. 'CONFIG_MODULE' end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) be00cd389f9f2afcd361e5d5e33622839555cbd9 127 33 2022-10-23T04:26:44Z wikipedia>Legoktm 0 Replace [[Module:No globals]] with require( "strict" ) Scribunto text/plain require('strict') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) bdb0ecc9f26f26b9c0ce12a066a183ac9d4f0705 34 33 2023-02-08T01:57:25Z BlindCartographer 2 1 revision imported from [[:dev:Module:Message_box]] Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local templatestyles = 'Module:Message box/styles.css' -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {user = 'tmbox', talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) and not self.isSmall then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end local function templatestyles(frame, src) return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = templatestyles} } .. 'CONFIG_MODULE' end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) be00cd389f9f2afcd361e5d5e33622839555cbd9 Module:Message box/configuration 828 19 41 2022-10-21T22:38:02Z dev>Pppery 0 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix'}, }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } c6bd9191861b23e474e12b19c694335c4bc3af5f 42 41 2023-02-08T01:59:10Z BlindCartographer 2 1 revision imported from [[:dev:Module:Message_box/configuration]] Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix'}, }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } c6bd9191861b23e474e12b19c694335c4bc3af5f Template:Mbox 10 59 125 2022-12-18T05:46:16Z wikipedia>TadejM 0 wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 5bfb2becf8bed35974b47e3ff8660dc14bee40c7 Module:Documentation/styles.css 828 20 43 2023-01-16T23:40:04Z dev>Pppery 0 sanitized-css text/css .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 44 43 2023-02-08T01:59:22Z BlindCartographer 2 1 revision imported from [[:dev:Module:Documentation/styles.css]] sanitized-css text/css .documentation, .documentation-metadata { border: 1px solid #a2a9b1; background-color: #ecfcf4; clear: both; } .documentation { margin: 1em 0 0 0; padding: 1em; } .documentation-metadata { margin: 0.2em 0; /* same margin left-right as .documentation */ font-style: italic; padding: 0.4em 1em; /* same padding left-right as .documentation */ } .documentation-startbox { padding-bottom: 3px; border-bottom: 1px solid #aaa; margin-bottom: 1ex; } .documentation-heading { font-weight: bold; font-size: 125%; } .documentation-clear { /* Don't want things to stick out where they shouldn't. */ clear: both; } .documentation-toolbar { font-style: normal; font-size: 85%; } /* [[Category:Template stylesheets]] */ 5fb984fe8632dc068db16853a824c9f3d5175dd9 Main Page 0 1 1 2023-02-07T11:40:22Z MediaWiki default 1 Create main page wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 8 1 2023-02-07T22:33:57Z BlindCartographer 2 Protected "[[Main Page]]": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 File:Gamedevwiki.png 6 2 2 2023-02-07T21:47:06Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 3 2 2023-02-07T21:57:49Z BlindCartographer 2 BlindCartographer uploaded a new version of [[File:Gamedevwiki.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 4 3 2023-02-07T22:04:10Z BlindCartographer 2 Protected "[[File:Gamedevwiki.png]]": Major to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Favicon.ico 6 3 5 2023-02-07T22:06:21Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 6 5 2023-02-07T22:17:11Z BlindCartographer 2 Protected "[[File:Favicon.ico]]": Major to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-Logo.png 6 4 7 2023-02-07T22:31:11Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 9 7 2023-02-07T22:37:42Z BlindCartographer 2 Protected "[[File:Site-Logo.png]]": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User:BlindCartographer 2 5 10 2023-02-07T22:41:29Z BlindCartographer 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 11 10 2023-02-07T23:17:46Z BlindCartographer 2 Protected "[[User:BlindCartographer]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 17 11 2023-02-08T01:20:27Z BlindCartographer 2 wikitext text/x-wiki Hey, I'm BlindCartographer 6d2bf48f163dbd7b873ee1d27a71b166db4249e8 Template:Nbox 10 6 12 2023-02-08T01:02:16Z BlindCartographer 2 Created page with "{| style="width: 100% !important;" |- | style="border: 4px solid {{{border|#6F6F6F}}}; border-radius 3px; background-color: {{{background|#F6F6F6}}}; padding: 10px 15px;" | {{{header|}}} {{{text|}}} |- |} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {| style="width: 100% !important;" |- | style="border: 4px solid {{{border|#6F6F6F}}}; border-radius 3px; background-color: {{{background|#F6F6F6}}}; padding: 10px 15px;" | {{{header|}}} {{{text|}}} |- |} <noinclude>{{Documentation}}</noinclude> 8d2b746af9b0361d6ad2eb27e0185e3dfe93f574 13 12 2023-02-08T01:02:35Z BlindCartographer 2 Protected "[[Template:Nbox]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {| style="width: 100% !important;" |- | style="border: 4px solid {{{border|#6F6F6F}}}; border-radius 3px; background-color: {{{background|#F6F6F6}}}; padding: 10px 15px;" | {{{header|}}} {{{text|}}} |- |} <noinclude>{{Documentation}}</noinclude> 8d2b746af9b0361d6ad2eb27e0185e3dfe93f574 15 13 2023-02-08T01:09:35Z BlindCartographer 2 wikitext text/x-wiki {| style="width: 100% !important;" |- | style="border: 4px solid {{{border|#6F6F6F}}}; border-radius: 5px; background-color: {{{background|#F6F6F6}}}; padding: 10px 15px;" | {{{header|}}} {{{text|}}} |- |} <noinclude>{{Documentation}}</noinclude> bbc2344f8e906bb5b47c72b9852a914fcb6bca52 24 15 2023-02-08T01:29:42Z BlindCartographer 2 wikitext text/x-wiki {| style="width: 100% !important;" |- | style="border: 4px solid {{{border|#6F6F6F}}}; border-radius: 5px; background-color: {{{background|#F6F6F6}}}; padding: 10px 15px;" | {{{header|}}} {{{text|}}} |- |} e8ed1fcec69071cfdec08af6aa36a6fa6d9d3497 Template:MP-Header 10 7 14 2023-02-08T01:05:51Z BlindCartographer 2 Created page with "{{Nbox |header=<center><span style="font-size:25px;>'''Game Development Wiki'''</span></center> |text=<div align=center>[[File:Site-Logo.png|50px|link=Game Development Wiki:About]]</div><center><big>{{NUMBEROFARTICLES}} articles • {{NUMBEROFEDITS}} edits • {{NUMBEROFFILES}} files • {{NUMBEROFUSERS}} users</big></center> }}" wikitext text/x-wiki {{Nbox |header=<center><span style="font-size:25px;>'''Game Development Wiki'''</span></center> |text=<div align=center>[[File:Site-Logo.png|50px|link=Game Development Wiki:About]]</div><center><big>{{NUMBEROFARTICLES}} articles • {{NUMBEROFEDITS}} edits • {{NUMBEROFFILES}} files • {{NUMBEROFUSERS}} users</big></center> }} cf8cad6a46755cd68111d09a4a2fd63baa9b7888 16 14 2023-02-08T01:10:45Z BlindCartographer 2 Protected "[[Template:MP-Header]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |header=<center><span style="font-size:25px;>'''Game Development Wiki'''</span></center> |text=<div align=center>[[File:Site-Logo.png|50px|link=Game Development Wiki:About]]</div><center><big>{{NUMBEROFARTICLES}} articles • {{NUMBEROFEDITS}} edits • {{NUMBEROFFILES}} files • {{NUMBEROFUSERS}} users</big></center> }} cf8cad6a46755cd68111d09a4a2fd63baa9b7888 Template:Note 10 11 25 2023-02-08T01:31:46Z BlindCartographer 2 Created page with "<onlyinclude>{{#if: {{#if:{{{1|{{{text|}}}}}}|{{{1|{{{text|}}}}}}|{{#if:<noinclude>demo</noinclude>|demo|{{{demo|}}}}} }} | <div role="note" class="note note-{{#switch: {{{2|{{{type|}}}}}} |gotcha=error |=info |#default={{{2|{{{type|}}}}}} }} {{#ifeq:{{{inline|}}}|1|note-inline}}">{{{1|{{{text}}}}}}</div> }}<!-- --></onlyinclude>" wikitext text/x-wiki <onlyinclude>{{#if: {{#if:{{{1|{{{text|}}}}}}|{{{1|{{{text|}}}}}}|{{#if:<noinclude>demo</noinclude>|demo|{{{demo|}}}}} }} | <div role="note" class="note note-{{#switch: {{{2|{{{type|}}}}}} |gotcha=error |=info |#default={{{2|{{{type|}}}}}} }} {{#ifeq:{{{inline|}}}|1|note-inline}}">{{{1|{{{text}}}}}}</div> }}<!-- --></onlyinclude> 665aaea4f05dd43ccaa3ff4a306ccaf8cb1d82c0 54 25 2023-02-08T02:09:15Z BlindCartographer 2 wikitext text/x-wiki <templatestyles src="Template:Note/style.css" /> <onlyinclude>{{#if: {{#if:{{{1|{{{text|}}}}}}|{{{1|{{{text|}}}}}}|{{#if:<noinclude>demo</noinclude>|demo|{{{demo|}}}}} }} | <div role="note" class="note note-{{#switch: {{{2|{{{type|}}}}}} |gotcha=error |=info |#default={{{2|{{{type|}}}}}} }} {{#ifeq:{{{inline|}}}|1|note-inline}}">{{{1|{{{text}}}}}}</div> }}<!-- --></onlyinclude> d14049394ab80394305561f4de7a8bba0bc96c44 Template:Note/styles.css 10 12 26 2023-02-08T01:34:30Z BlindCartographer 2 Created page with "/** Note Template Styling **/ .note { background-position: left 7px top 50%; padding: 0.5em 0.5em 0.5em 40px; margin: 0.5em 0; overflow: hidden; background-color: #f8f9fa; background-repeat: no-repeat; border: 1px solid #ddd; } .note-inline { display: inline-block; vertical-align: middle; } .note-info { background-color: #f6efe5; background-image: url(https://upload.wikimedia.org/wikipedia/commons/d/d5/OOjs_UI_icon_reference_20_ac6600.svg); background-size: 2..." sanitized-css text/css /** Note Template Styling **/ .note { background-position: left 7px top 50%; padding: 0.5em 0.5em 0.5em 40px; margin: 0.5em 0; overflow: hidden; background-color: #f8f9fa; background-repeat: no-repeat; border: 1px solid #ddd; } .note-inline { display: inline-block; vertical-align: middle; } .note-info { background-color: #f6efe5; background-image: url(https://upload.wikimedia.org/wikipedia/commons/d/d5/OOjs_UI_icon_reference_20_ac6600.svg); background-size: 25px; border-color: #ac6600; padding-left: 40px; min-height: 28px; } .note-reminder { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-warn { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-error { background-color: #fee7e6; background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg); background-size: 25px; border-color: #c33; min-height: 28px; } fe0d3d43e528b234ee8c08115d9315f01b94b482 27 26 2023-02-08T01:34:53Z BlindCartographer 2 Protected "[[Template:Note/styles.css]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) sanitized-css text/css /** Note Template Styling **/ .note { background-position: left 7px top 50%; padding: 0.5em 0.5em 0.5em 40px; margin: 0.5em 0; overflow: hidden; background-color: #f8f9fa; background-repeat: no-repeat; border: 1px solid #ddd; } .note-inline { display: inline-block; vertical-align: middle; } .note-info { background-color: #f6efe5; background-image: url(https://upload.wikimedia.org/wikipedia/commons/d/d5/OOjs_UI_icon_reference_20_ac6600.svg); background-size: 25px; border-color: #ac6600; padding-left: 40px; min-height: 28px; } .note-reminder { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-warn { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-error { background-color: #fee7e6; background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg); background-size: 25px; border-color: #c33; min-height: 28px; } fe0d3d43e528b234ee8c08115d9315f01b94b482 28 27 2023-02-08T01:37:29Z BlindCartographer 2 BlindCartographer moved page [[Template:Note/styles.css]] to [[Template:Note/style.css]] without leaving a redirect sanitized-css text/css /** Note Template Styling **/ .note { background-position: left 7px top 50%; padding: 0.5em 0.5em 0.5em 40px; margin: 0.5em 0; overflow: hidden; background-color: #f8f9fa; background-repeat: no-repeat; border: 1px solid #ddd; } .note-inline { display: inline-block; vertical-align: middle; } .note-info { background-color: #f6efe5; background-image: url(https://upload.wikimedia.org/wikipedia/commons/d/d5/OOjs_UI_icon_reference_20_ac6600.svg); background-size: 25px; border-color: #ac6600; padding-left: 40px; min-height: 28px; } .note-reminder { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-warn { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-error { background-color: #fee7e6; background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg); background-size: 25px; border-color: #c33; min-height: 28px; } fe0d3d43e528b234ee8c08115d9315f01b94b482 Template:Mbox/doc 10 23 52 2023-02-08T02:05:12Z BlindCartographer 2 Created page with "{{tl|mbox}} stands '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features. ==Basic usage== The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below. <pre style="overflow:auto;"> {{mbox | name = | small = {{{small|}}} | type = | image = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix..." wikitext text/x-wiki {{tl|mbox}} stands '''m'''essage '''box''', which is a metatemplate used to build message boxes for other templates. It offers several different colours, images and some other features. ==Basic usage== The box below shows the most common parameters that are accepted by {{Tl|mbox}}. The purpose of each is described below. <pre style="overflow:auto;"> {{mbox | name = | small = {{{small|}}} | type = | image = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | cat = | all = }} </pre> ==Full usage== The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously. {| class="wikitable" align="left" style="background:transparent; width=30%;" !All parameters |- |<pre style="font-size:100%"> {{mbox | name = | small = {{{small|}}} | type = | image = | imageright = | smallimage = | smallimageright = | class = | style = | textstyle = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | text = | smalltext = | plainlinks = no | removalnotice = | cat = | all = | cat2 = | all2 = | cat3 = | all3 = }} </pre> |} {{clear}} ==Common parameters== === ''name'' === The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example [[w:Template:Underlinked]] specifies {{Para|name|Underlinked}}. This parameter should be updated if the template is ever moved. The purpose of this parameter is to allow the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself. === ''small'' === The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article: {{mbox|nocat=true|small=left|text=This is the small left-aligned mbox format.}} Otherwise the standard format will be produced: {{mbox|nocat=true|text=This is the standard mbox format.}} Other variations: * For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all. * For templates which should ''always'' be small, just specify {{Para|small|left}}. * For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article. To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together: {{mbox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}} See [[#Sect]] below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display). === ''type'' === The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below. {{mbox |nocat=true | type = speedy | text = type=<u>speedy</u> – Speedy deletion issues }} {{mbox |nocat=true | type = delete | text = type=<u>delete</u> – Deletion issues, }} {{mbox |nocat=true | type = content | text = type=<u>content</u> – Content issues }} {{mbox |nocat=true | type = style | text = type=<u>style</u> – Style issues }} {{mbox |nocat=true | type = notice | text = type=<u>notice</u> – Article notices {{mbox |nocat=true | type = move | text = type=<u>move</u> – Merge, split and transwiki proposals }} {{mbox |nocat=true | type = protection | text = type=<u>protection</u> – Protection notices, }} If no ''type'' parameter is given the template defaults to {{para|type|notice}}. === ''image'' === You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files. Widths of 40-50px are typical. Please note: * If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.) * If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area. === ''sect'' === Many message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc. If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated. A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. === ''issue'' and ''fix'' === The ''issue'' parameter is used to describe the issue with the page. Try to keep it short and to-the-point (approximately 10-20 words). The ''fix'' parameter contains some text which describes what should be done to improve the page. It may be longer than the text in ''issue'', but should not usually be more than two sentences. When the template is in its small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example [[w:Template:Citation style]] defines When used stand-alone it produces the whole text: But when used with |small=left it displays only the issue: === ''talk'' === Some message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. talk=<nowiki>{{{talk|}}}</nowiki> This parameter may then be used by an editor as follows: * talk=SECTION HEADING – the link will point to the specified section on the article's talk page, e.g. talk=Foo. * talk=FULL PAGE NAME – the template will link to the page specified (which may include a section anchor), e.g. talk=Talk:Banana#Foo Notes: * When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined. * In order to make sure there is always a link to the talk page, you can use |talk=<nowiki>{{{talk|#}}}</nowiki>. * If the talk page does not exist, there will be no link, whatever the value of the parameter. === ''date'' === Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a bot). This will be displayed after the message in a smaller font. Passing this parameter also enables monthly cleanup categorisation when the ''cat'' parameter is also defined. === ''info'' === This parameter is for specifying additional information. Whatever you add here will appear after the date. === ''cat'' === This parameter defines a monthly cleanup category. If |cat=CATEGORY then: * articles will be placed in '''Category:CATEGORY from DATE''' if |date=DATE is specified. * articles will be placed in '''Category:CATEGORY''' if the date is not specified. For example, [[w:Template:No footnotes]] specifies |cat=Articles lacking in-text citations and so an article with the template {{Tlx|No footnotes|2=date=June 2010|SISTER=w:}} will be placed in [[w:Category:Articles lacking in-text citations from June 2010]]. The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. === ''all'' === The ''all'' parameter defines a category into which all articles should be placed. The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. == Additional parameters == === ''imageright'' === An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image. === ''smallimage'' and ''smallimageright'' === Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified. === ''class'' === Custom [[w:Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated. === ''style'' and ''textstyle'' === Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. * ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box. * ''textstyle'' relates to the text cell. === ''text'' and ''smalltext'' === Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead. Customised text for the small format can be defined using ''smalltext''. === ''plainlinks'' === Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. === ''cat2'', ''cat3'', ''all2'', and ''all3'' === * ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]]. * ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]]. == Technical notes == * If you need to use special characters in the text parameter then you need to escape them like this: <syntaxhighlight lang="xml"> {{mbox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} </syntaxhighlight> {{mbox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} * The <code>&lt;div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that. * The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. == TemplateData == <templatedata> { "params": { "1": {}, "small": { "label": "Small Mode", "description": "The small parameter should be passed through the template, as this will allow editors to use the small format by specifying |small=left on an article.", "type": "string", "suggestedvalues": [ "no", "left" ] }, "talk": {}, "date": {}, "name": { "label": "Template Name", "description": "The name parameter specifies the name of the template, without the Template namespace prefix. ", "type": "string" }, "type": {}, "image": {}, "sect": {}, "issue": {}, "fix": {}, "info": {}, "cat": {}, "all": {}, "imageright": {}, "class": {}, "text ": {}, "plainlinks": {}, "smallimage ": {}, "smallimageright": {}, "textstyle": {}, "style ": {}, "smalltext": {}, "cat2": {}, "cat3": {}, "all2": {}, "all3": {} }, "paramOrder": [ "name", "small", "type", "image", "sect", "issue", "fix", "talk", "date", "1", "info", "cat", "all", "imageright", "class", "text ", "plainlinks", "smallimage ", "smallimageright", "textstyle", "style ", "smalltext", "cat2", "cat3", "all2", "all3" ] } </templatedata> <includeonly>[[Category:Notice templates]]</includeonly> 485ccdb51212c23c077b80fd07fc9251a93b5d28 53 52 2023-02-08T02:06:24Z BlindCartographer 2 Blanked the page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Notice 10 24 55 2023-02-08T02:33:33Z BlindCartographer 2 Created page with "<div id="{{{id|}}}" style="font-size: 20px; line-height: 160%; width: 100%; padding: 8px 16px 8px; margin-bottom: 5px; box-sizing: border-box; background: #7b7b7b3b; {{{style|}}}; "> <div style="float: left; width: 55px; padding-top: 8px;text-align:center;"> {{{image|<span style="font-size:40px;">ℹ️️</span>}}} </div> <div style="padding-left: 75px;">'''{{{type|Header}}}'''<div style="margin-top:8px;height: 5px; width: 200px; background: {{#switch:{{{border|}}} |..." wikitext text/x-wiki <div id="{{{id|}}}" style="font-size: 20px; line-height: 160%; width: 100%; padding: 8px 16px 8px; margin-bottom: 5px; box-sizing: border-box; background: #7b7b7b3b; {{{style|}}}; "> <div style="float: left; width: 55px; padding-top: 8px;text-align:center;"> {{{image|<span style="font-size:40px;">ℹ️️</span>}}} </div> <div style="padding-left: 75px;">'''{{{type|Header}}}'''<div style="margin-top:8px;height: 5px; width: 200px; background: {{#switch:{{{border|}}} | red = #ed1c24 | orange = #ff7f26 | yellow = #ffd000 | purple = #c819ad | blue = #00b7e0 | green = #94d11f | gray = #8a8a8a | #default = #8a8a8a }};"></div> <div style="font-size: 14px; margin-top: 12px; line-height: 160%">{{{info|Notice text}}}</div> </div> </div><noinclude> 16825ff685c58d7b1a4d585bb4f4b0fdc96939ee MediaWiki:Sidebar 8 25 56 2023-02-08T02:36:38Z BlindCartographer 2 Created page with " * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES * Test ** Special:CretePage|Create a Page" wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES * Test ** Special:CretePage|Create a Page d374b5221bb48d11462657598f2675d48c9708a9 57 56 2023-02-08T02:38:01Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES * Test ** Special:WikiForum|Forums 0fd68e31e3820b94d7b56b9a7d950546b1b9ad0b MediaWiki:Sidebar 8 25 58 57 2023-02-08T02:38:38Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES f3bf4656b14f3243e5c7dbe79c2564f871cea02d Template:Notice 10 24 59 55 2023-02-08T02:39:02Z BlindCartographer 2 Protected "[[Template:Notice]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div id="{{{id|}}}" style="font-size: 20px; line-height: 160%; width: 100%; padding: 8px 16px 8px; margin-bottom: 5px; box-sizing: border-box; background: #7b7b7b3b; {{{style|}}}; "> <div style="float: left; width: 55px; padding-top: 8px;text-align:center;"> {{{image|<span style="font-size:40px;">ℹ️️</span>}}} </div> <div style="padding-left: 75px;">'''{{{type|Header}}}'''<div style="margin-top:8px;height: 5px; width: 200px; background: {{#switch:{{{border|}}} | red = #ed1c24 | orange = #ff7f26 | yellow = #ffd000 | purple = #c819ad | blue = #00b7e0 | green = #94d11f | gray = #8a8a8a | #default = #8a8a8a }};"></div> <div style="font-size: 14px; margin-top: 12px; line-height: 160%">{{{info|Notice text}}}</div> </div> </div><noinclude> 16825ff685c58d7b1a4d585bb4f4b0fdc96939ee File:Information icon4.png 6 26 60 2023-02-08T02:47:00Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Ambox warning.png 6 27 61 2023-02-08T02:47:41Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 62 61 2023-02-08T02:48:25Z BlindCartographer 2 BlindCartographer moved page [[File:Ambox warning pn.svg.png]] to [[File:Ambox warning.png]] without leaving a redirect wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Ambox important.webp 6 28 63 2023-02-08T02:48:57Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Ambox important red.png 6 29 64 2023-02-08T02:50:05Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 65 64 2023-02-08T02:50:57Z BlindCartographer 2 BlindCartographer moved page [[File:Ambox important red.svg.png]] to [[File:Ambox important red.png]] without leaving a redirect wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Ambox question.png 6 30 66 2023-02-08T02:51:58Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Wikipedia-emblem.png 6 31 67 2023-02-08T02:52:31Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Essay.png 6 32 68 2023-02-08T02:53:33Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 69 68 2023-02-08T02:55:30Z BlindCartographer 2 BlindCartographer moved page [[File:Essay.svg.png]] to [[File:Essay.png]] without leaving a redirect wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Cabinet.webp 6 33 70 2023-02-08T02:55:53Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Ambox stop.webp 6 34 71 2023-02-08T02:56:34Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 MediaWiki:Abusefilter-intro 8 35 73 2023-02-08T03:30:34Z BlindCartographer 2 Created page with "Welcome to the Abuse Filter management interface. The Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions. This interface shows a list of defined filters, and allows them to be modified. Using the Abuse Filter, authorized users can configure a wide range of tests, which may help identify and prevent potentially harmful edits and other activities before they are added to the wiki, and the automatic actions to be taken. Importa..." wikitext text/x-wiki Welcome to the Abuse Filter management interface. The Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions. This interface shows a list of defined filters, and allows them to be modified. Using the Abuse Filter, authorized users can configure a wide range of tests, which may help identify and prevent potentially harmful edits and other activities before they are added to the wiki, and the automatic actions to be taken. Important: * Make sure you are familiar with the [[GDW:P|wiki rules and policies]]. * Keep an eye on the log. * Check for any false positives. * Use the test filters before creating it individually. {{Mbox |border color=#F28500 |image=[[File:Ambox important.webp|45px|link=]] |header=Please be careful when modifying an abuse filter. |text=Even a single typo can potentially disrupt the editing of thousands of legitimate contributors. It is strongly recommended that you test your filters first before you enable any actions. If you are not sure about something, please ask for help. ---- |comment=If you cause problems, you may have your abuse filter editor permission revoked. }} cbbd62288367120ef385a64ca8238ebc6f96ca61 95 73 2023-02-08T14:52:29Z BlindCartographer 2 wikitext text/x-wiki Welcome to the Abuse Filter management interface. The Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions. This interface shows a list of defined filters, and allows them to be modified. Using the Abuse Filter, authorized users can configure a wide range of tests, which may help identify and prevent potentially harmful edits and other activities before they are added to the wiki, and the automatic actions to be taken. Important: * Make sure you are familiar with the [[GDW:P|wiki rules and policies]]. * Keep an eye on the log. * Check for any false positives. * Use the test filters before creating it individually. {{Ombox |border color=#F28500 |image=[[File:Ambox important.webp|45px|link=]] |header=Please be careful when modifying an abuse filter. |text=Even a single typo can potentially disrupt the editing of thousands of legitimate contributors. It is strongly recommended that you test your filters first before you enable any actions. If you are not sure about something, please ask for help. ---- |comment=If you cause problems, you may have your abuse filter editor permission revoked. }} 4c0b1047eab1b0cabcc7f4ff7ed7308f32b57a0d MediaWiki:Common.css 8 37 75 2023-02-08T03:36:20Z BlindCartographer 2 Created page with "/* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap');" css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); 103777b0e2eca6c9fbbc145251fc3f6c5b0c546d 81 75 2023-02-08T03:56:25Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Main Page Styling */ #mp-left { background: #f5fffa; border-color: #cef2e0; } #mp-left .mp-h2 { background: #cef2e0; border-color: #a3bfb1; } #mp-right { background: #f5faff; border-color: #cedff2; } #mp-right .mp-h2 { background: #cedff2; border-color: #a3b0bf; } #mp-middle { background: #fff5fa; border-color: #f2cedd; } e87beffd8e1b31becf11a09a66c8004aef4631ea 82 81 2023-02-08T03:58:01Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Main Page Styling */ #mp-left { align: left !important } #mp-right { align: right !important } 8e013ee03d14cf5eb40b04d4d0e1c3dc47a8312a 94 82 2023-02-08T14:39:50Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } 70ef571e1cca897115cb585fbdd318bf6bc17421 Template:MP-Main 10 38 76 2023-02-08T03:43:16Z BlindCartographer 2 Created page with "{{Nbox |border=#2C670F |background=#F8FFF5 |header=<div style="font-size:180%; font-family: Righteous">'''Welcome to the Game Development Wiki!'''</div> |text=The '''Game Development Wiki''' (better known as the '''Gamedev wiki''') is a collaborative encyclopedia used to store and collect knowledge about the past, present, and future of game development. Even you can contribute to it. Before starting, please read the [[GDW:P|Rules]] and [[GDW:EM|Editing Manual]]. Thank..." wikitext text/x-wiki {{Nbox |border=#2C670F |background=#F8FFF5 |header=<div style="font-size:180%; font-family: Righteous">'''Welcome to the Game Development Wiki!'''</div> |text=The '''Game Development Wiki''' (better known as the '''Gamedev wiki''') is a collaborative encyclopedia used to store and collect knowledge about the past, present, and future of game development. Even you can contribute to it. Before starting, please read the [[GDW:P|Rules]] and [[GDW:EM|Editing Manual]]. Thank you! *Have a question? Visit the [[Special:WikiForums|Forums]]! *Have something to report to the admins? Visit the [[Project:Administrator Noticeboard|Administrator Noticeboard]]. *Want to see who the administrators are? Find out [[project:Administrators|here]]. *Looking for something to do? See what's happening down at the [[Websites Wiki:Community portal|Community portal]]. *Want to see what's happened at the wiki recently? See the '''[[Special:RecentChanges|RecentChanges]]''' page. ''We are NOT a source of advertisement, promotion, or anything of the sort. We are a wiki, a place to store information. We do not accept low-quality articles or posts that exist solely to advertise.'' <div style="text-align:right;">[[Special:CreatePage|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Create an article</span>]] [[Special:Random|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Random page</span>]]</div> }} 3772c7ef6803b0a74dc7e543d3aa1acfcbbfbddd 77 76 2023-02-08T03:44:01Z BlindCartographer 2 Protected "[[Template:MP-Main]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |border=#2C670F |background=#F8FFF5 |header=<div style="font-size:180%; font-family: Righteous">'''Welcome to the Game Development Wiki!'''</div> |text=The '''Game Development Wiki''' (better known as the '''Gamedev wiki''') is a collaborative encyclopedia used to store and collect knowledge about the past, present, and future of game development. Even you can contribute to it. Before starting, please read the [[GDW:P|Rules]] and [[GDW:EM|Editing Manual]]. Thank you! *Have a question? Visit the [[Special:WikiForums|Forums]]! *Have something to report to the admins? Visit the [[Project:Administrator Noticeboard|Administrator Noticeboard]]. *Want to see who the administrators are? Find out [[project:Administrators|here]]. *Looking for something to do? See what's happening down at the [[Websites Wiki:Community portal|Community portal]]. *Want to see what's happened at the wiki recently? See the '''[[Special:RecentChanges|RecentChanges]]''' page. ''We are NOT a source of advertisement, promotion, or anything of the sort. We are a wiki, a place to store information. We do not accept low-quality articles or posts that exist solely to advertise.'' <div style="text-align:right;">[[Special:CreatePage|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Create an article</span>]] [[Special:Random|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Random page</span>]]</div> }} 3772c7ef6803b0a74dc7e543d3aa1acfcbbfbddd Template:MP-Help 10 39 78 2023-02-08T03:51:05Z BlindCartographer 2 Created page with "{{Nbox |border=#180F67 |background=#F7F6FF |header=<big><span style="font-family:Righteous;>'''Wiki Help'''</span></big> |text='''Not sure where to start?''' <br> If you are new to wikis, check out the '''[[m:Help:Contents|MediaWiki help pages]]'''. Please assist by contributing to or creating any articles whatsoever relating to websites. All positive contributions great or small will be fully appreciated. If you need any help, please ask a member of our admin team, P..." wikitext text/x-wiki {{Nbox |border=#180F67 |background=#F7F6FF |header=<big><span style="font-family:Righteous;>'''Wiki Help'''</span></big> |text='''Not sure where to start?''' <br> If you are new to wikis, check out the '''[[m:Help:Contents|MediaWiki help pages]]'''. Please assist by contributing to or creating any articles whatsoever relating to websites. All positive contributions great or small will be fully appreciated. If you need any help, please ask a member of our admin team, [[Project:Administrators|located here.]] '''Adding content''' <br> If you feel like contributing to this wiki, please have a look at the [[Special:Wantedpages|pages]] that need creating and expanding. Currently we are hard at work on the wiki. Before contributing, please have a read of our [[Project:Policy|rules]] and [[Project:Editing Manual|editing manual]]. These guides details all the standards across this wiki, to ensure it is the best it can be. }} 018f1695b288dde13f04c1f25dfdeeec17c986e6 79 78 2023-02-08T03:51:14Z BlindCartographer 2 Protected "[[Template:MP-Help]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |border=#180F67 |background=#F7F6FF |header=<big><span style="font-family:Righteous;>'''Wiki Help'''</span></big> |text='''Not sure where to start?''' <br> If you are new to wikis, check out the '''[[m:Help:Contents|MediaWiki help pages]]'''. Please assist by contributing to or creating any articles whatsoever relating to websites. All positive contributions great or small will be fully appreciated. If you need any help, please ask a member of our admin team, [[Project:Administrators|located here.]] '''Adding content''' <br> If you feel like contributing to this wiki, please have a look at the [[Special:Wantedpages|pages]] that need creating and expanding. Currently we are hard at work on the wiki. Before contributing, please have a read of our [[Project:Policy|rules]] and [[Project:Editing Manual|editing manual]]. These guides details all the standards across this wiki, to ensure it is the best it can be. }} 018f1695b288dde13f04c1f25dfdeeec17c986e6 Main Page 0 1 83 8 2023-02-08T04:01:13Z BlindCartographer 2 Replaced content with "__NOTOC__ <div id="mp-left"> {{MP-Header}} {{MP-Main}} <div id="mp-right"> {{MP-Help}} </div> [[Category:{{SITENAME}}]]" wikitext text/x-wiki __NOTOC__ <div id="mp-left"> {{MP-Header}} {{MP-Main}} <div id="mp-right"> {{MP-Help}} </div> [[Category:{{SITENAME}}]] 447cf3e1c48230e4e5131a62f2824415d4a29efb GDW:P 0 41 84 2023-02-08T04:02:59Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Policy]] wikitext text/x-wiki #REDIRECT [[Project:Policy]] 58b0555922488aafe08ecda7aab09e4a5d782839 85 84 2023-02-08T04:03:12Z BlindCartographer 2 Protected "[[GDW:P]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Policy]] 58b0555922488aafe08ecda7aab09e4a5d782839 Template:Ombox 10 42 86 2023-02-08T04:11:14Z BlindCartographer 2 Created page with "<div id="ombox" style="padding: 10px;"> {| align="center" style="background-color: {{{background|#F8F9FA}}}; padding: 2px; width: {{{width|70%}}}; border: 1px solid {{{border color|#A2A9B1}}};" |- valign="middle" | width="12%" | {{{image|[[File:Information icon4.png|45px]]}}} | <div style="text-align: center;">'''{{{header| }}}'''</div>{{{text| }}} <small>{{{comment|}}}</small> |} </div>" wikitext text/x-wiki <div id="ombox" style="padding: 10px;"> {| align="center" style="background-color: {{{background|#F8F9FA}}}; padding: 2px; width: {{{width|70%}}}; border: 1px solid {{{border color|#A2A9B1}}};" |- valign="middle" | width="12%" | {{{image|[[File:Information icon4.png|45px]]}}} | <div style="text-align: center;">'''{{{header| }}}'''</div>{{{text| }}} <small>{{{comment|}}}</small> |} </div> b0f4910a4b3c55af522db5170a66d8b323a70b38 87 86 2023-02-08T04:11:24Z BlindCartographer 2 Protected "[[Template:Ombox]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div id="ombox" style="padding: 10px;"> {| align="center" style="background-color: {{{background|#F8F9FA}}}; padding: 2px; width: {{{width|70%}}}; border: 1px solid {{{border color|#A2A9B1}}};" |- valign="middle" | width="12%" | {{{image|[[File:Information icon4.png|45px]]}}} | <div style="text-align: center;">'''{{{header| }}}'''</div>{{{text| }}} <small>{{{comment|}}}</small> |} </div> b0f4910a4b3c55af522db5170a66d8b323a70b38 Template:Policy page 10 43 88 2023-02-08T04:11:44Z BlindCartographer 2 Created page with "{{Ombox |image=[[File:Site-Logo.png|45px|link=Main Page]] |header=This is a Gamedev wiki Policy Page. |text=It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. }}" wikitext text/x-wiki {{Ombox |image=[[File:Site-Logo.png|45px|link=Main Page]] |header=This is a Gamedev wiki Policy Page. |text=It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. }} 5e2fa62cf896310260613adeeb784ec6dcc305b0 89 88 2023-02-08T04:11:57Z BlindCartographer 2 Protected "[[Template:Policy page]]": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Ombox |image=[[File:Site-Logo.png|45px|link=Main Page]] |header=This is a Gamedev wiki Policy Page. |text=It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. }} 5e2fa62cf896310260613adeeb784ec6dcc305b0 Game Development Wiki:Policy 4 44 90 2023-02-08T04:12:18Z BlindCartographer 2 Created page with "{{Policy page}}" wikitext text/x-wiki {{Policy page}} 9c9ac439eee720d82b870457c537d4474672d6e4 91 90 2023-02-08T04:12:38Z BlindCartographer 2 Protected "[[Game Development Wiki:Policy]]": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} 9c9ac439eee720d82b870457c537d4474672d6e4 MediaWiki:Editnotice-3 8 45 92 2023-02-08T04:17:03Z BlindCartographer 2 Created page with "{{Notice |border= black |type= Notice |info= Please sign all of your messages by adding four tildes (<nowiki>~~~~</nowiki>) to the end. Make sure to stay polite and civil, as per wiki [[GDW:P|policy]]. }}" wikitext text/x-wiki {{Notice |border= black |type= Notice |info= Please sign all of your messages by adding four tildes (<nowiki>~~~~</nowiki>) to the end. Make sure to stay polite and civil, as per wiki [[GDW:P|policy]]. }} 5b14f42aa009de470944bd84c8b07c0909dd74fa 93 92 2023-02-08T04:18:06Z BlindCartographer 2 BlindCartographer moved page [[MediaWiki:Editnotice 3]] to [[MediaWiki:Editnotice-3]] without leaving a redirect wikitext text/x-wiki {{Notice |border= black |type= Notice |info= Please sign all of your messages by adding four tildes (<nowiki>~~~~</nowiki>) to the end. Make sure to stay polite and civil, as per wiki [[GDW:P|policy]]. }} 5b14f42aa009de470944bd84c8b07c0909dd74fa Category:Game Development Wiki 14 46 96 2023-02-08T14:58:16Z BlindCartographer 2 Created page with "This category is for pages directly related to the game development wiki." wikitext text/x-wiki This category is for pages directly related to the game development wiki. 54d2d213c8c584c81f73623e5f681d258a8945c2 Template:Stub 10 47 101 2023-02-08T15:13:00Z BlindCartographer 2 Created page with "{{Mbox |border color=#0000FF |imagelink= [[Category:Stubs]] |header=This article is a stub! |text=This article requires some more information, as it is too short. If you think you have any good information, <div class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this page!]</div> }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude>" wikitext text/x-wiki {{Mbox |border color=#0000FF |imagelink= [[Category:Stubs]] |header=This article is a stub! |text=This article requires some more information, as it is too short. If you think you have any good information, <div class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this page!]</div> }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 2beba1e2b70aed6ecd89ff85a0448f0548225b9e Template:Ambox 10 48 103 2023-02-08T15:15:56Z BlindCartographer 2 Created page with "{{Mbox | namespace = main | type = {{{type|}}} | small = {{{small|}}} | id = {{{id|}}} | class = {{{class|}}} | style = {{{style|}}} | textstyle = {{{textstyle|}}} | plainlinks = {{{plainlinks|}}} | text = {{{text|}}} | issue = {{{issue|}}} | fix = {{{fix|}}} | date = {{{date|}}} | info = {{{info|}}} | image = {{{image|}}} | imageright = {{{imageright|}}} | doc = {{{doc|}}} | cat = {{{cat|}}} }}" wikitext text/x-wiki {{Mbox | namespace = main | type = {{{type|}}} | small = {{{small|}}} | id = {{{id|}}} | class = {{{class|}}} | style = {{{style|}}} | textstyle = {{{textstyle|}}} | plainlinks = {{{plainlinks|}}} | text = {{{text|}}} | issue = {{{issue|}}} | fix = {{{fix|}}} | date = {{{date|}}} | info = {{{info|}}} | image = {{{image|}}} | imageright = {{{imageright|}}} | doc = {{{doc|}}} | cat = {{{cat|}}} }} 3b3eaa6f06cced341597654e245f649453d05c19 104 103 2023-02-08T15:16:08Z BlindCartographer 2 Protected "[[Template:Ambox]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | namespace = main | type = {{{type|}}} | small = {{{small|}}} | id = {{{id|}}} | class = {{{class|}}} | style = {{{style|}}} | textstyle = {{{textstyle|}}} | plainlinks = {{{plainlinks|}}} | text = {{{text|}}} | issue = {{{issue|}}} | fix = {{{fix|}}} | date = {{{date|}}} | info = {{{info|}}} | image = {{{image|}}} | imageright = {{{imageright|}}} | doc = {{{doc|}}} | cat = {{{cat|}}} }} 3b3eaa6f06cced341597654e245f649453d05c19 Module:Message box 828 15 108 34 2023-02-08T15:35:43Z BlindCartographer 2 Scribunto text/plain -- <pre> -- Load necessary modules. require('Module:No globals') local getArgs local categoryHandler = require('Module:Category handler')._main local yesno = require('Module:Yesno') -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- ----------------------------------------------------------------------------- -- Helper functions -- ----------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- ----------------------------------------------------------------------------- -- Box class definition -- ----------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox --[[ -- @function MessageBox.new -- @factory MessageBox -- @return {MessageBox} -- @param {string} boxType -- @param[opt] {table} args -- @param {table} cfg -- @static --]] function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self:addClass( cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks' ) for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then self.name = args.name if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small>''(%s)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return categoryHandler{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image'):addClass('mbox__content__image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text'):addClass('mbox__content__wrapper') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellSpan = textCell:tag('span') textCellSpan :addClass('mbox-text-span') :wikitext(self.issue or nil) if not self.isSmall then textCellSpan:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellSpan:wikitext(self.date and (' ' .. self.date) or nil) if not self.isSmall then textCellSpan :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -- ----------------------------------------------------------------------------- -- Exports -- ----------------------------------------------------------------------------- local p, mt = {}, {} --[[ -- @function p._exportClasses -- @return {table} --]] function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end --[[ -- @function p.main -- -- @param {string} boxType -- @param[opt] {table} args -- @param[opt] {table} cfgTables -- @return {string} --]] function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData('Message box/configuration')) box:setParameters() box:setCategories() return box:export() end --[[ -- @function p.mbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.ambox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.cmbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.fmbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.imbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.ombox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.tmbox -- @param {Frame} frame -- @return {string} --]] function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Dev:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) 9deb88acad775e81f9eefc12dfba6847694bb1a2 111 108 2023-02-08T15:51:53Z BlindCartographer 2 Scribunto text/plain -- <pre> -- Load necessary modules. require('Module:No globals') local getArgs local categoryHandler = require('Module:Category handler')._main local yesno = require('Module:Yesno') -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- ----------------------------------------------------------------------------- -- Helper functions -- ----------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- ----------------------------------------------------------------------------- -- Box class definition -- ----------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox --[[ -- @function MessageBox.new -- @factory MessageBox -- @return {MessageBox} -- @param {string} boxType -- @param[opt] {table} args -- @param {table} cfg -- @static --]] function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self:addClass( cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks' ) for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then self.name = args.name if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small>''(%s)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return categoryHandler{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image'):addClass('mbox__content__image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text'):addClass('mbox__content__wrapper') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellSpan = textCell:tag('span') textCellSpan :addClass('mbox-text-span') :wikitext(self.issue or nil) if not self.isSmall then textCellSpan:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellSpan:wikitext(self.date and (' ' .. self.date) or nil) if not self.isSmall then textCellSpan :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -- ----------------------------------------------------------------------------- -- Exports -- ----------------------------------------------------------------------------- local p, mt = {}, {} --[[ -- @function p._exportClasses -- @return {table} --]] function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end --[[ -- @function p.main -- -- @param {string} boxType -- @param[opt] {table} args -- @param[opt] {table} cfgTables -- @return {string} --]] function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData('Module:Message box/configuration')) box:setParameters() box:setCategories() return box:export() end --[[ -- @function p.mbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.ambox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.cmbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.fmbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.imbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.ombox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.tmbox -- @param {Frame} frame -- @return {string} --]] function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) 5b596efb5d89cdc3fbb9725f10cb8b150fd086f6 Module:Category handler 828 49 109 2023-02-08T15:37:19Z BlindCartographer 2 Created page with "-- <nowiki> -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all na..." Scribunto text/plain -- <nowiki> -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Dev:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Dev:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Dev:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Dev:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Dev:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Dev:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Dev:Category handler/data') local args = require('Dev:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p 34190f377ec515247234507b447512f58dcab209 110 109 2023-02-08T15:46:26Z BlindCartographer 2 Scribunto text/plain -- <nowiki> -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Dev:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Dev:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Dev:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Dev:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Dev:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Dev:Category handler/data') local args = require('Dev:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p ba8fcfe333c1be83157a18035b2747f7277911e8 116 110 2023-02-08T15:59:19Z BlindCartographer 2 Scribunto text/plain -- <nowiki> -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Dev:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p 5291e4af7cde86ed104710a84ed8b8d86471e0f7 117 116 2023-02-08T16:03:16Z BlindCartographer 2 Scribunto text/plain -- <nowiki> -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p 3be8bcc6ba33548d754ba61a0e19e1a001fcc091 Module:Category handler/data 828 50 112 2023-02-08T15:54:15Z BlindCartographer 2 Created page with "-- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist(..." Scribunto text/plain -- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist( title.prefixedText, blacklist ) data.currentTitleNamespaceParameters = mShared.getNamespaceParameters( title, mShared.getParamMappings() ) return data abbc68048ff698e88dda06b64ecf384bbf583120 Module:Category handler/config 828 51 113 2023-02-08T15:54:56Z BlindCartographer 2 Created page with "-------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. ----------------------------..." Scribunto text/plain -------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- foo = 'parameter name', -- -- -- -- To add multiple names, you can use this format: -- -- -- -- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, -- -------------------------------------------------------------------------------- cfg.parameters = { -- The nocat and categories parameter suppress -- categorisation. They are used with Module:Yesno, and work as follows: -- -- cfg.nocat: -- Result of yesno() Effect -- true Categorisation is suppressed -- false Categorisation is allowed, and -- the blacklist check is skipped -- nil Categorisation is allowed -- -- cfg.categories: -- Result of yesno() Effect -- true Categorisation is allowed, and -- the blacklist check is skipped -- false Categorisation is suppressed -- nil Categorisation is allowed nocat = 'nocat', categories = 'categories', -- The parameter name for the legacy "category2" parameter. This skips the -- blacklist if set to the cfg.category2Yes value, and suppresses -- categorisation if present but equal to anything other than -- cfg.category2Yes or cfg.category2Negative. category2 = 'category2', -- cfg.subpage is the parameter name to specify how to behave on subpages. subpage = 'subpage', -- The parameter for data to return in all namespaces. all = 'all', -- The parameter name for data to return if no data is specified for the -- namespace that is detected. other = 'other', -- The parameter name used to specify a page other than the current page; -- used for testing and demonstration. demopage = 'page', } -------------------------------------------------------------------------------- -- Parameter values -- -- These are set values that can be used with certain parameters. Only one -- -- value can be specified, like this: -- -- -- -- cfg.foo = 'value name' -- -- -------------------------------------------------------------------------------- -- The following settings are used with the cfg.category2 parameter. Setting -- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2 -- is present but equal to anything other than cfg.category2Yes or -- cfg.category2Negative then it supresses cateogrisation. cfg.category2Yes = 'yes' cfg.category2Negative = '¬' -- The following settings are used with the cfg.subpage parameter. -- cfg.subpageNo is the value to specify to not categorise on subpages; -- cfg.subpageOnly is the value to specify to only categorise on subpages. cfg.subpageNo = 'no' cfg.subpageOnly = 'only' -------------------------------------------------------------------------------- -- Default namespaces -- -- This is a table of namespaces to categorise by default. The keys are the -- -- namespace numbers. -- -------------------------------------------------------------------------------- cfg.defaultNamespaces = { [ 0] = true, -- main [ 6] = true, -- file [ 12] = true, -- help [ 14] = true, -- category [100] = true, -- portal [108] = true, -- book } -------------------------------------------------------------------------------- -- Wrappers -- -- This is a wrapper template or a list of wrapper templates to be passed to -- -- [[Module:Arguments]]. -- -------------------------------------------------------------------------------- cfg.wrappers = 'Template:Category handler' -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 373cd107b13a5b00e6a1b7e66a749f12502c849d Module:Category handler/blacklist 828 52 114 2023-02-08T15:56:16Z BlindCartographer 2 Created page with "-- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Project:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]',..." Scribunto text/plain -- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Project:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]', -- The userbox "template" space. '^User talk:UBX%f[/\0]', -- Don't categorise subpages of these pages, but allow -- categorisation of the base page. '^Project:Template messages/.*$', '/[aA]rchive' -- Don't categorise archives. } 98409789d207c7d704eae185796f27750b924cc0 Module:Category handler/shared 828 53 115 2023-02-08T15:57:37Z BlindCartographer 2 Created page with "-- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Dev:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return req..." Scribunto text/plain -- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Dev:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return require(dataPage).mappings end end function p.getNamespaceParameters(titleObj, mappings) -- We don't use title.nsText for the namespace name because it adds -- underscores. local mappingsKey if titleObj.isTalkPage then mappingsKey = 'talk' else mappingsKey = mw.site.namespaces[titleObj.namespace].name end mappingsKey = mw.ustring.lower(mappingsKey) return mappings[mappingsKey] or {} end return p f9ad152680d04b8d8df80323cc6410a2ac9cb434 118 115 2023-02-08T16:03:56Z BlindCartographer 2 Scribunto text/plain -- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Module:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return require(dataPage).mappings end end function p.getNamespaceParameters(titleObj, mappings) -- We don't use title.nsText for the namespace name because it adds -- underscores. local mappingsKey if titleObj.isTalkPage then mappingsKey = 'talk' else mappingsKey = mw.site.namespaces[titleObj.namespace].name end mappingsKey = mw.ustring.lower(mappingsKey) return mappings[mappingsKey] or {} end return p d2d5de1a031e6ce97c242cbfa8afe7a92cb9eca5 Module:Namespace detect/data 828 54 119 2023-02-08T16:06:44Z BlindCartographer 2 Created page with "-------------------------------------------------------------------------------- -- Namespace detect data -- -- This module holds data for [[Module:Namespace detect]] to be loaded per -- -- page, rather than per #invoke, for performance reasons. -- -------------------------------------------------------------------------------- local cfg = mw.title.new( 'Module:Namespace detect/config').exists an..." Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect data -- -- This module holds data for [[Module:Namespace detect]] to be loaded per -- -- page, rather than per #invoke, for performance reasons. -- -------------------------------------------------------------------------------- local cfg = mw.title.new( 'Module:Namespace detect/config').exists and require('Module:Namespace detect/config') local function addKey(t, key, defaultKey) if key ~= defaultKey then t[#t + 1] = key end end -- Get a table of parameters to query for each default parameter name. -- This allows wikis to customise parameter names in the cfg table while -- ensuring that default parameter names will always work. The cfg table -- values can be added as a string, or as an array of strings. local defaultKeys = { 'main', 'talk', 'other', 'subjectns', 'demospace', 'demopage' } local argKeys = {} for i, defaultKey in ipairs(defaultKeys) do argKeys[defaultKey] = {defaultKey} end for defaultKey, t in pairs(argKeys) do local cfgValue = cfg[defaultKey] local cfgValueType = type(cfgValue) if cfgValueType == 'string' then addKey(t, cfgValue, defaultKey) elseif cfgValueType == 'table' then for i, key in ipairs(cfgValue) do addKey(t, key, defaultKey) end end cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more. end local function getParamMappings() --[[ -- Returns a table of how parameter names map to namespace names. The keys -- are the actual namespace names, in lower case, and the values are the -- possible parameter names for that namespace, also in lower case. The -- table entries are structured like this: -- { -- [''] = {'main'}, -- ['wikipedia'] = {'wikipedia', 'project', 'wp'}, -- ... -- } --]] local mappings = {} local mainNsName = mw.site.subjectNamespaces[0].name mainNsName = mw.ustring.lower(mainNsName) mappings[mainNsName] = mw.clone(argKeys.main) mappings['talk'] = mw.clone(argKeys.talk) for nsid, ns in pairs(mw.site.subjectNamespaces) do if nsid ~= 0 then -- Exclude main namespace. local nsname = mw.ustring.lower(ns.name) local canonicalName = mw.ustring.lower(ns.canonicalName) mappings[nsname] = {nsname} if canonicalName ~= nsname then table.insert(mappings[nsname], canonicalName) end for _, alias in ipairs(ns.aliases) do table.insert(mappings[nsname], mw.ustring.lower(alias)) end end end return mappings end return { argKeys = argKeys, cfg = cfg, mappings = getParamMappings() } d1f81557df82419783c79b5f8199787a881dc85e Module:Namespace detect 828 55 120 2023-02-08T16:08:45Z BlindCartographer 2 Created page with "-- <nowiki> --[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace..." Scribunto text/plain -- <nowiki> --[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are supported, -- -- and namespace names are detected automatically for the local wiki. The -- -- module can also use the corresponding subject namespace value if it is -- -- used on a talk page. Parameter names can be configured for different wikis -- -- by altering the values in the "cfg" table in -- -- Module:Namespace detect/config. -- -- -- -------------------------------------------------------------------------------- --]] local data = mw.title.new( 'Module:Namespace detect/data').exists and mw.loadData('Module:Namespace detect/data') local argKeys = data.argKeys local cfg = data.cfg local mappings = data.mappings local yesno = require('Module:Yesno') local mArguments -- Lazily initialise Module:Arguments local mTableTools -- Lazily initilalise Module:TableTools local ustringLower = mw.ustring.lower local p = {} local function fetchValue(t1, t2) -- Fetches a value from the table t1 for the first key in array t2 where -- a non-nil value of t1 exists. for i, key in ipairs(t2) do local value = t1[key] if value ~= nil then return value end end return nil end local function equalsArrayValue(t, value) -- Returns true if value equals a value in the array t. Otherwise -- returns false. for i, arrayValue in ipairs(t) do if value == arrayValue then return true end end return false end function p.getPageObject(page) -- Get the page object, passing the function through pcall in case of -- errors, e.g. being over the expensive function count limit. if page then local success, pageObject = pcall(mw.title.new, page) if success then return pageObject else return nil end else return mw.title.getCurrentTitle() end end -- Provided for backward compatibility with other modules function p.getParamMappings() return mappings end local function getNamespace(args) -- This function gets the namespace name from the page object. local page = fetchValue(args, argKeys.demopage) if page == '' then page = nil end local demospace = fetchValue(args, argKeys.demospace) if demospace == '' then demospace = nil end local subjectns = fetchValue(args, argKeys.subjectns) local ret if demospace then -- Handle "demospace = main" properly. if equalsArrayValue(argKeys.main, ustringLower(demospace)) then ret = mw.site.namespaces[0].name else ret = demospace end else local pageObject = p.getPageObject(page) if pageObject then if pageObject.isTalkPage then -- Get the subject namespace if the option is set, -- otherwise use "talk". if yesno(subjectns) then ret = mw.site.namespaces[pageObject.namespace].subject.name else ret = 'talk' end else ret = pageObject.nsText end else return nil -- return nil if the page object doesn't exist. end end ret = ret:gsub('_', ' ') return ustringLower(ret) end function p._main(args) -- Check the parameters stored in the mappings table for any matches. local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys local params = mappings[namespace] or {} local ret = fetchValue(args, params) --[[ -- If there were no matches, return parameters for other namespaces. -- This happens if there was no text specified for the namespace that -- was detected or if the demospace parameter is not a valid -- namespace. Note that the parameter for the detected namespace must be -- completely absent for this to happen, not merely blank. --]] if ret == nil then ret = fetchValue(args, argKeys.other) end return ret end function p.main(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {removeBlanks = false}) local ret = p._main(args) return ret or '' end function p.table(frame) --[[ -- Create a wikitable of all subject namespace parameters, for -- documentation purposes. The talk parameter is optional, in case it -- needs to be excluded in the documentation. --]] -- Load modules and initialise variables. mTableTools = require('Module:TableTools') local namespaces = mw.site.namespaces local cfg = data.cfg local useTalk = type(frame) == 'table' and type(frame.args) == 'table' and yesno(frame.args.talk) -- Whether to use the talk parameter. -- Get the header names. local function checkValue(value, default) if type(value) == 'string' then return value else return default end end local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace') local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases') -- Put the namespaces in order. local mappingsOrdered = {} for nsname, params in pairs(mappings) do if useTalk or nsname ~= 'talk' then local nsid = namespaces[nsname].id -- Add 1, as the array must start with 1; nsid 0 would be lost otherwise. nsid = nsid + 1 mappingsOrdered[nsid] = params end end mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered) -- Build the table. local ret = '{| class="wikitable"' .. '\n|-' .. '\n! ' .. nsHeader .. '\n! ' .. aliasesHeader for i, params in ipairs(mappingsOrdered) do for j, param in ipairs(params) do if j == 1 then ret = ret .. '\n|-' .. '\n| <code>' .. param .. '</code>' .. '\n| ' elseif j == 2 then ret = ret .. '<code>' .. param .. '</code>' else ret = ret .. ', <code>' .. param .. '</code>' end end end ret = ret .. '\n|-' .. '\n|}' return ret end return p 2d9e187100ef7c09defce3fb8625f1a1faf7950a Module:Namespace detect/config 828 56 121 2023-02-08T16:09:20Z BlindCartographer 2 Created page with "-------------------------------------------------------------------------------- -- Namespace detect configuration data -- -- -- -- This module stores configuration data for Module:Namespace detect. Here -- -- you can localise the module to your wiki's language. -- --..." Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect configuration data -- -- -- -- This module stores configuration data for Module:Namespace detect. Here -- -- you can localise the module to your wiki's language. -- -- -- -- To activate a configuration item, you need to uncomment it. This means -- -- that you need to remove the text "-- " at the start of the line. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. Values added -- -- here will work in addition to the default English parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- cfg.foo = 'parameter name' -- -- -- -- To add multiple names, you can use this format: -- -- -- -- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} -- -------------------------------------------------------------------------------- ---- This parameter displays content for the main namespace: -- cfg.main = 'main' ---- This parameter displays in talk namespaces: -- cfg.talk = 'talk' ---- This parameter displays content for "other" namespaces (namespaces for which ---- parameters have not been specified): -- cfg.other = 'other' ---- This parameter makes talk pages behave as though they are the corresponding ---- subject namespace. Note that this parameter is used with [[Module:Yesno]]. ---- Edit that module to change the default values of "yes", "no", etc. -- cfg.subjectns = 'subjectns' ---- This parameter sets a demonstration namespace: -- cfg.demospace = 'demospace' ---- This parameter sets a specific page to compare: cfg.demopage = 'page' -------------------------------------------------------------------------------- -- Table configuration -- -- These configuration items allow customisation of the "table" function, -- -- used to generate a table of possible parameters in the module -- -- documentation. -- -------------------------------------------------------------------------------- ---- The header for the namespace column in the wikitable containing the list of ---- possible subject-space parameters. -- cfg.wikitableNamespaceHeader = 'Namespace' ---- The header for the wikitable containing the list of possible subject-space ---- parameters. -- cfg.wikitableAliasesHeader = 'Aliases' -------------------------------------------------------------------------------- -- End of configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 0e4ff08d13c4b664d66b32c232deb129b77c1a56 Template:Message box 10 57 122 2023-02-08T16:10:29Z BlindCartographer 2 Created page with "{{#invoke:Message box|main}}" wikitext text/x-wiki {{#invoke:Message box|main}} 04c3193cf93fe228b3fc078cc95237a17c5ff72b 123 122 2023-02-08T16:11:46Z BlindCartographer 2 Protected "[[Template:Message box]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{#invoke:Message box|main}} 04c3193cf93fe228b3fc078cc95237a17c5ff72b 131 123 2023-02-08T16:32:27Z BlindCartographer 2 wikitext text/x-wiki <div id="mbox">{{#invoke:Message box|main}}</div> 40aabf65c04b06b65775dc1c42c7465a28a873e6 Module:TableTools 828 58 124 2023-02-08T16:17:59Z BlindCartographer 2 Created page with "-- <nowiki> -------------------------------------------------------------------------------- -- This module includes a number of functions for dealing with Lua tables. -- -- @script TableTools -- @alias p -- @release stable -- @require [[mw:Extension:Scribunto/Lua_reference_manual#libraryUtil|libraryUtil]] -- @attribution [[wikipedia:Module:TableTools|Module:TableTools]] (Wikipedia) -- @see [[Wikipedia:Module:TableTools]] for a similar module. ---------------------------..." Scribunto text/plain -- <nowiki> -------------------------------------------------------------------------------- -- This module includes a number of functions for dealing with Lua tables. -- -- @script TableTools -- @alias p -- @release stable -- @require [[mw:Extension:Scribunto/Lua_reference_manual#libraryUtil|libraryUtil]] -- @attribution [[wikipedia:Module:TableTools|Module:TableTools]] (Wikipedia) -- @see [[Wikipedia:Module:TableTools]] for a similar module. -------------------------------------------------------------------------------- local p = {} local libraryUtil = require('libraryUtil') -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType -------------------------------------------------------------------------------- -- Returns a new table with all parameters stored into keys 1, 2, etc. and with -- a field `n` with the total number of parameters. Note that the resulting -- table may not be a sequence. -- -- @function p.pack -- @param[opt] ... -- @return {table} -- @see <http://www.lua.org/manual/5.2/manual.html#pdf-table.pack> -------------------------------------------------------------------------------- function p.pack(...) return {n = select('#', ...), ...} end -------------------------------------------------------------------------------- -- Returns the first `n` arguments in `...`. If `n` is negative, arguments are -- counted from the end of the table. -- -- @function p.selectFirst -- @param {number} n -- @param[opt] ... -- @see [[Lua reference manual/Standard libraries#select]] -- @see <http://lua-users.org/wiki/VarargTheSecondClassCitizen> -------------------------------------------------------------------------------- function p.selectFirst(n, ...) checkType('Module:TableTools.selectFirst', 1, n, 'number') local function err() error('bad argument #1 to \'Dev:TableTools.selectFirst\' ' .. '(index out of range)') end local function recurse(index, next, ...) if index == 0 then return end return next, recurse(index - 1, ...) end n = math.modf(n) local count = select("#", ...) if -count > n then err() elseif -1 > n and n >= -count then return recurse(count + 1 + n, ...) elseif n == -1 then return ... elseif n == 0 then err() elseif n == 1 then return (...) elseif 1 < n and n <= count then return recurse(n, ...) elseif count < n then return ... end end -------------------------------------------------------------------------------- -- Returns `true` if a given table is a sequence. -- -- @function p.isSequence -- @param {table} t -- @return {boolean} -- @see <http://stackoverflow.com/a/6080274> -------------------------------------------------------------------------------- function p.isSequence(t) checkType('Module:TableTools.isSequence', 1, t, 'table') local i = 1 for _ in pairs(t) do if t[i] == nil then return false end i = i + 1 end return true end -------------------------------------------------------------------------------- -- Returns the number of elements in a table, even if it is not a sequence. -- -- @function p.size -- @param {table} t -- @return {number} -- @see <http://stackoverflow.com/a/2705804> -------------------------------------------------------------------------------- function p.size(t) checkType('Dev:TableTools.size', 1, t, 'table') local i = 0 for _ in pairs(t) do i = i + 1 end return i end -------------------------------------------------------------------------------- -- Returns `true` if a given table contains a certain element. -- -- @function p.includes -- @param {table} t -- @param elm -- @return {boolean} -- @see <http://stackoverflow.com/q/2282444> -------------------------------------------------------------------------------- function p.includes(t, elm) checkType('Module:TableTools.includes', 1, t, 'table') for _, v in pairs(t) do if v == elm then return true end end return false end -------------------------------------------------------------------------------- -- Merges the content of the second table with the content in the first one. -- -- @function p.merge -- @param {table} dest -- @param {table} source -- @return {table} -- @see <http://wiki.garrysmod.com/page/table/Merge> -------------------------------------------------------------------------------- function p.merge(dest, source) checkType('Module:TableTools.merge', 1, dest, 'table') checkType('Module:TableTools.merge', 2, source, 'table') for k, v in pairs(source) do if type(v) == 'table' and type(dest[k]) == 'table' then -- Don't overwrite one table with another; instead merge them -- recurisvely. p.merge(dest[k], v) else dest[k] = v end end return dest end ------------------------------------------------------------------------------------ -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. -- -- @function p.isPositiveInteger -- @param v -- @return {boolean} ------------------------------------------------------------------------------------ function p.isPositiveInteger(v) if type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity then return true else return false end end ------------------------------------------------------------------------------------ -- This function returns true if the given number is a NaN value, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a value can be a valid table key. Lua will -- generate an error if a NaN is used as a table key. -- -- @function p.isNan -- @param v -- @return {boolean} ------------------------------------------------------------------------------------ function p.isNan(v) if type(v) == 'number' and tostring(v) == '-nan' then return true else return false end end ------------------------------------------------------------------------------------ -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. -- -- @function p.shallowClone -- @param {table} t -- @return {table} ------------------------------------------------------------------------------------ function p.shallowClone(t) local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end ------------------------------------------------------------------------------------ -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. -- -- @function p.removeDuplicates -- @param {table} t -- @return {table} ------------------------------------------------------------------------------------ function p.removeDuplicates(t) checkType('removeDuplicates', 1, t, 'table') local isNan = p.isNan local ret, exists = {}, {} for i, v in ipairs(t) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end ------------------------------------------------------------------------------------ -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. -- -- @function p.numKeys -- @param {table} t -- @return {table} ------------------------------------------------------------------------------------ function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k, v in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will -- return {1, 3, 6}. -- -- @function p.affixNums -- @param {table} t -- @param[opt] {boolean} prefix -- @param[opt] {boolean} suffix -- @return {table} ------------------------------------------------------------------------------------ function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. s = s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') return s end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k, v in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end ------------------------------------------------------------------------------------ -- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table -- of subtables in the format -- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} } -- Keys that don't end with an integer are stored in a subtable named "other". -- The compress option compresses the table so that it can be iterated over with -- ipairs. -- -- @function p.numData -- @param {table} t -- @param[opt] {boolean} compress -- @return {table} ------------------------------------------------------------------------------------ function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end ------------------------------------------------------------------------------------ -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. -- -- @function p.compressSparseArray -- @param {table} t -- @return {table} ------------------------------------------------------------------------------------ function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end ------------------------------------------------------------------------------------ -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. -- -- @function p.sparseIpairs -- @param {table} t -- @return {function} ------------------------------------------------------------------------------------ function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end ------------------------------------------------------------------------------------ -- This returns the length of a table, or the first integer key n counting from -- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return -- a different value when there are gaps in the array portion of the table. -- Intended to be used on data loaded with mw.loadData. For other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of -- the number of unnamed template parameters, so use this function for -- frame.args. -- -- @function p.length -- @param {table} t -- @return {number} ------------------------------------------------------------------------------------ function p.length(t) local i = 1 while t[i] ~= nil do i = i + 1 end return i - 1 end return p -- </nowiki> -- (Add categories here.) 592ecebdaeb941ffab4f0eb319728612f3ce20c0 Template:Mbox 10 59 126 125 2023-02-08T16:19:53Z BlindCartographer 2 1 revision imported wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 5bfb2becf8bed35974b47e3ff8660dc14bee40c7 Module:Message box 828 15 128 111 2023-02-08T16:19:53Z BlindCartographer 2 1 revision imported Scribunto text/plain -- <pre> -- Load necessary modules. require('Module:No globals') local getArgs local categoryHandler = require('Module:Category handler')._main local yesno = require('Module:Yesno') -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- ----------------------------------------------------------------------------- -- Helper functions -- ----------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -- ----------------------------------------------------------------------------- -- Box class definition -- ----------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox --[[ -- @function MessageBox.new -- @factory MessageBox -- @return {MessageBox} -- @param {string} boxType -- @param[opt] {table} args -- @param {table} cfg -- @static --]] function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self:addClass( cfg.usePlainlinksParam and yesno(args.plainlinks or true) and 'plainlinks' ) for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then self.name = args.name if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small>''(%s)''</small>", date) end self.info = args.info end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return categoryHandler{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image'):addClass('mbox__content__image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text'):addClass('mbox__content__wrapper') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellSpan = textCell:tag('span') textCellSpan :addClass('mbox-text-span') :wikitext(self.issue or nil) if not self.isSmall then textCellSpan:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellSpan:wikitext(self.date and (' ' .. self.date) or nil) if not self.isSmall then textCellSpan :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -- ----------------------------------------------------------------------------- -- Exports -- ----------------------------------------------------------------------------- local p, mt = {}, {} --[[ -- @function p._exportClasses -- @return {table} --]] function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end --[[ -- @function p.main -- -- @param {string} boxType -- @param[opt] {table} args -- @param[opt] {table} cfgTables -- @return {string} --]] function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData('Module:Message box/configuration')) box:setParameters() box:setCategories() return box:export() end --[[ -- @function p.mbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.ambox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.cmbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.fmbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.imbox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.ombox -- @param {Frame} frame -- @return {string} --]] --[[ -- @function p.tmbox -- @param {Frame} frame -- @return {string} --]] function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) 5b596efb5d89cdc3fbb9725f10cb8b150fd086f6 MediaWiki:Common.css 8 37 129 94 2023-02-08T16:28:42Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } body.theme-fandomdesktop-light #mbox { color: black; } body.theme-fandomdesktop-dark #mbox { color: black; } 2b5d8814f11a852574aa1e4e50d69e0fc5a64fea 130 129 2023-02-08T16:32:16Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } 482dc03aa5d762f9e005ce7f0ad24050d01f8a44 141 130 2023-02-08T20:54:06Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; } .portable-infobox .pi-title { background-color: #B0C4DE; } c3ef0e53b67740b19de34680faa9d9ba6393c7ad 142 141 2023-02-08T20:55:55Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; margin: auto; } .portable-infobox .pi-title { background-color: #B0C4DE; margin: auto; } 6dd17c6d1f7eeea85e88d55550f4daf12344e9be 144 142 2023-02-08T21:16:59Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; text-align:center; } .portable-infobox .pi-title { background-color: #B0C4DE; text-align: center; font-family: Righteous; } 929b687307ae076706e9e99c5e5a3dd02aef0d59 146 144 2023-02-08T21:21:56Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; text-align: center; } .portable-infobox .pi-title { background-color: #B0C4DE; text-align: center; font-family: Righteous; } 2a14d7a0bf0c791540356f9b343cc9cbb2d400bb 147 146 2023-02-08T21:23:29Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; vertical-align: center; } .portable-infobox .pi-title { background-color: #B0C4DE; vertical-align: center; font-family: Righteous; } 3dc2b7599ae9e525190bd384272d6144f2613a05 148 147 2023-02-08T21:23:48Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; vertical-align: middle; } .portable-infobox .pi-title { background-color: #B0C4DE; vertical-align: middle; font-family: Righteous; } 1729a486a65b570090752906f20694f25addb1fd 149 148 2023-02-08T21:25:18Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .header { background-color: #B0C4DE; vertical-align: middle; } .portable-infobox .title { background-color: #B0C4DE; vertical-align: middle; font-family: Righteous; } 6b8b0a862dc267f200d39abd9a709e9efe74b73b 150 149 2023-02-08T21:25:45Z BlindCartographer 2 Undo revision 149 by [[Special:Contributions/BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]]) css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #B0C4DE; vertical-align: middle; } .portable-infobox .pi-title { background-color: #B0C4DE; vertical-align: middle; font-family: Righteous; } 1729a486a65b570090752906f20694f25addb1fd Template:Stub 10 47 132 101 2023-02-08T16:37:21Z BlindCartographer 2 wikitext text/x-wiki Placeholder <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 23c818e769a8a1c20469b4ac630fbde73cd8d7ca File:Site-Logo.png 6 4 133 9 2023-02-08T20:31:55Z BlindCartographer 2 BlindCartographer uploaded a new version of [[File:Site-Logo.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-Wordmark.png 6 60 134 2023-02-08T20:32:28Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 137 134 2023-02-08T20:33:47Z BlindCartographer 2 Protected "[[File:Site-Wordmark.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 138 137 2023-02-08T20:42:48Z BlindCartographer 2 BlindCartographer uploaded a new version of [[File:Site-Wordmark.png]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Site-Icon.png 6 61 135 2023-02-08T20:33:06Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 136 135 2023-02-08T20:33:24Z BlindCartographer 2 Protected "[[File:Site-Icon.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Policy page 10 43 139 89 2023-02-08T20:45:04Z BlindCartographer 2 wikitext text/x-wiki {{Ombox |image=[[File:Site-Icon.png|45px|link=Main Page]] |header=This is a Gamedev wiki Policy Page. |text=It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. }} 3cf5714ccd62f845043852f57941e4e6472a89aa Game Development Wiki:About 4 62 140 2023-02-08T20:49:09Z BlindCartographer 2 Created page with "[[File:Site-Logo.png|thumb|right|The Gamedev Wiki Logo]] The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, and {{NUMBEROFFILES}} files." wikitext text/x-wiki [[File:Site-Logo.png|thumb|right|The Gamedev Wiki Logo]] The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, and {{NUMBEROFFILES}} files. f7c2a9013efa6e6b37c6eb36dc2ef8c1d3d04d93 145 140 2023-02-08T21:17:22Z BlindCartographer 2 wikitext text/x-wiki {{Infobox website |title1=<center><span style="font-family: Righteous;">Gamedev Wiki</span></center> |image1= [[File:Site-Logo.png|link=Main Page]] |type_of_site= Encyclopedic Wiki |language(s)=English |written_in= [[wikipedia:Help:Wikitext|Wikitext]] [[wikipedia:Lua (programming language)|Lua]] [[wikipedia:CSS|CSS]] [[wikipedia:JavaScript|JavaScript]] [[wikipedia:PHP|PHP]] |registration=Optional |founded=February 7th, 2023 |founder(s)=[[User:BlindCartographer|BlindCartographer]] |status=Active |url= [[Main Page|gamedev.miraheze.org]] }} The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, and {{NUMBEROFFILES}} files. 6788bb3f5d4a57308a836d2dfaf1fef1cea2593a 151 145 2023-02-08T21:31:09Z BlindCartographer 2 wikitext text/x-wiki {{Infobox website |title1=<center><span style="font-family: Righteous;">Gamedev Wiki</span></center> |image1= [[File:Site-Logo.png|link=Main Page]] |type_of_site= Encyclopedic Wiki |language(s)=English |written_in= [[wikipedia:Help:Wikitext|Wikitext]] [[wikipedia:Lua (programming language)|Lua]] [[wikipedia:CSS|CSS]] [[wikipedia:JavaScript|JavaScript]] [[wikipedia:PHP|PHP]] |registration=Optional |founded=February 7th, 2023 |founder(s)=[[User:BlindCartographer|BlindCartographer]] |status=Active |url= [[Main Page|gamedev.miraheze.org]] }} The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, {{NUMBEROFFILES}} files, and {{NUMBEROFUSERS}}. It was founded by [[User:BlindCartographer|BlindCartographer]] on February 7th, 2023, using the wiki-farm [[m:Miraheze|Miraheze]]. == History == The Gamedev Wiki was founded on February 7th, 2023, by [[User:BlindCartographer|BlindCartographer]]. It was founded in an attempt to give a central encyclopedia and advice hub about game development. [[Category:{{SITENAME}}]] 77b3508c602535a35490fa49e88009f668ada2e8 156 151 2023-02-08T21:40:17Z BlindCartographer 2 Protected "[[Game Development Wiki:About]]": High traffic page: important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Infobox website |title1=<center><span style="font-family: Righteous;">Gamedev Wiki</span></center> |image1= [[File:Site-Logo.png|link=Main Page]] |type_of_site= Encyclopedic Wiki |language(s)=English |written_in= [[wikipedia:Help:Wikitext|Wikitext]] [[wikipedia:Lua (programming language)|Lua]] [[wikipedia:CSS|CSS]] [[wikipedia:JavaScript|JavaScript]] [[wikipedia:PHP|PHP]] |registration=Optional |founded=February 7th, 2023 |founder(s)=[[User:BlindCartographer|BlindCartographer]] |status=Active |url= [[Main Page|gamedev.miraheze.org]] }} The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, {{NUMBEROFFILES}} files, and {{NUMBEROFUSERS}}. It was founded by [[User:BlindCartographer|BlindCartographer]] on February 7th, 2023, using the wiki-farm [[m:Miraheze|Miraheze]]. == History == The Gamedev Wiki was founded on February 7th, 2023, by [[User:BlindCartographer|BlindCartographer]]. It was founded in an attempt to give a central encyclopedia and advice hub about game development. [[Category:{{SITENAME}}]] 77b3508c602535a35490fa49e88009f668ada2e8 Template:Infobox website 10 63 143 2023-02-08T20:57:08Z BlindCartographer 2 Created page with "<infobox> <title source="title1"> <default>{{PAGENAME}}</default> </title> <image source="image1"> <caption source="caption1"/> </image> <data source="type_of_site"> <label>Type of site</label> </data> <data source="language(s)"> <label>Language(s)</label> </data> <data source="written_in"> <label>Written in</label> </data> <data source="subsidiaries"> <label>Subsidiaries</label> </data> <data source="registration"> <..." wikitext text/x-wiki <infobox> <title source="title1"> <default>{{PAGENAME}}</default> </title> <image source="image1"> <caption source="caption1"/> </image> <data source="type_of_site"> <label>Type of site</label> </data> <data source="language(s)"> <label>Language(s)</label> </data> <data source="written_in"> <label>Written in</label> </data> <data source="subsidiaries"> <label>Subsidiaries</label> </data> <data source="registration"> <label>Registration</label> </data> <group> <header>History</header> <data source="founded"> <label>Founded</label> </data> <data source="founder(s)"> <label>Founder(s)</label> </data> <data source="shut_down"> <label>Shut down</label> </data> </group> <group> <header>Other</header> <data source="status"> <label>Status</label> </data> <data source="url"> <label>URL</label> </data> </group> </infobox> <noinclude> Example usage: <pre> {{Website | title1=Example | image1=Example | caption1=Example | type_of_site=Example | language(s)=Example | written_in=Example | subsidiaries=Example | registration=Example | founded=Example | founder(s)=Example | shut_down=Example | status=Example | url=Example }} </pre> <templatedata> {"params":{"title1":{"suggested":true},"image1":{"suggested":true},"caption1":{"suggested":true},"type_of_site":{"suggested":true},"language(s)":{"suggested":true},"written_in":{"suggested":true},"subsidiaries":{"suggested":true},"registration":{"suggested":true},"founded":{"suggested":true},"founder(s)":{"suggested":true},"shut_down":{"suggested":true},"status":{"suggested":true},"url":{"suggested":true}},"sets":[],"maps":{}} </templatedata> </noinclude> <includeonly>{{#ifeq:{{NAMESPACE}}|{{ns:0}}|[[Category:Websites]]}}</includeonly> 341410d20d85026e444f5240bc74f02829527196 User:BlindCartographer/Sig 2 64 152 2023-02-08T21:35:46Z BlindCartographer 2 Created page with "[[User:BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]] · [[Special:Contributions/BlindCartographer|contribs]] · [[Special:Log/block/BlindCartographer|blocks]] · [[Special:Log/protect/BlindCartographer|protections]] · [[Special:Log/delete/BlindCartographer|deletions]] · [[Special:Log/move/BlindCartographer|page moves]] · [[Special:Log/rights/BlindCartographer|rights]])" wikitext text/x-wiki [[User:BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]] · [[Special:Contributions/BlindCartographer|contribs]] · [[Special:Log/block/BlindCartographer|blocks]] · [[Special:Log/protect/BlindCartographer|protections]] · [[Special:Log/delete/BlindCartographer|deletions]] · [[Special:Log/move/BlindCartographer|page moves]] · [[Special:Log/rights/BlindCartographer|rights]]) 538a2504085eca9d59983218ca11c61a42dcd73a 153 152 2023-02-08T21:36:03Z BlindCartographer 2 Protected "[[User:BlindCartographer/Sig]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki [[User:BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]] · [[Special:Contributions/BlindCartographer|contribs]] · [[Special:Log/block/BlindCartographer|blocks]] · [[Special:Log/protect/BlindCartographer|protections]] · [[Special:Log/delete/BlindCartographer|deletions]] · [[Special:Log/move/BlindCartographer|page moves]] · [[Special:Log/rights/BlindCartographer|rights]]) 538a2504085eca9d59983218ca11c61a42dcd73a MediaWiki:Protect-dropdown 8 65 154 2023-02-08T21:39:12Z BlindCartographer 2 Created page with "*Common protection reasons ** Excessive vandalism ** Excessive spamming ** Excessive edit farming ** Edit warring ** High traffic page ** [[Project:Staff|Staff]] userpage]] ** Important to wiki" wikitext text/x-wiki *Common protection reasons ** Excessive vandalism ** Excessive spamming ** Excessive edit farming ** Edit warring ** High traffic page ** [[Project:Staff|Staff]] userpage]] ** Important to wiki 316b8ccbbfac896e01266defc9bf77b0b4c714fa 155 154 2023-02-08T21:39:25Z BlindCartographer 2 wikitext text/x-wiki *Common protection reasons ** Excessive vandalism ** Excessive spamming ** Excessive edit farming ** Edit warring ** High traffic page ** [[Project:Staff|Staff]] userpage ** Important to wiki 2653d293a892840204915d9c4662ff33f5b43800 MediaWiki:Editnotice-0 8 66 157 2023-02-08T21:43:08Z BlindCartographer 2 Created page with "<center>[[File:Information icon4.png|20px]] '''Please be sure that all of your edits follow the [[GDW:P|policy]] and the standards of the [[GDW:EM|editing manual]] before proceeding, as failure to do so may result in a warning and/or block.'''</center>" wikitext text/x-wiki <center>[[File:Information icon4.png|20px]] '''Please be sure that all of your edits follow the [[GDW:P|policy]] and the standards of the [[GDW:EM|editing manual]] before proceeding, as failure to do so may result in a warning and/or block.'''</center> 6808127109ea672f6ea59ff587bd563e3485603e MediaWiki:Editnotice-8 8 67 158 2023-02-08T21:45:21Z BlindCartographer 2 Created page with "{{Notice |image= [[File:Ambox warning.png|50px|link=]] |border= red |type= Warning! |info= You are about to edit a major part of the wikis system interface. Please make sure all your edits on such pages are '''bug free''' and follow the '''[[m:Content Policy|content policy]]'''. }}" wikitext text/x-wiki {{Notice |image= [[File:Ambox warning.png|50px|link=]] |border= red |type= Warning! |info= You are about to edit a major part of the wikis system interface. Please make sure all your edits on such pages are '''bug free''' and follow the '''[[m:Content Policy|content policy]]'''. }} e63f02692e5709b071465016ae92d667a518137c Template:MP-Header 10 7 159 16 2023-02-08T21:57:12Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<center><span style="font-size:25px;>'''Game Development Wiki'''</span></center> |text=<div align=center>[[File:Site-Icon.png|50px|link=Game Development Wiki:About]]</div><center><big>{{NUMBEROFARTICLES}} articles • {{NUMBEROFEDITS}} edits • {{NUMBEROFFILES}} files • {{NUMBEROFUSERS}} users</big></center> }} 6cb667fba34f513908604db37d5264906cf61ebc Template:Welcome 10 68 160 2023-02-08T22:05:56Z BlindCartographer 2 Created page with "== Welcome to The Wiki == {{Nbox |border= #c9c9c9 |header=<span style="font-family:Righteous; font-size:25px;><center>Welcome to the Gamedev Wiki, {{BASEPAGENAME}}!</center></span> |text= [[File:Site-Icon.png|100px|right|link=Main Page]] <span style="font-size:15px;"> Hello and welcome, '''{{BASEPAGENAME}}''', to the Game Development Wiki! We're glad to have you, and we hope you enjoy your stay. In case you haven't yet, please be sure to read our GDW:P|rules and polic..." wikitext text/x-wiki == Welcome to The Wiki == {{Nbox |border= #c9c9c9 |header=<span style="font-family:Righteous; font-size:25px;><center>Welcome to the Gamedev Wiki, {{BASEPAGENAME}}!</center></span> |text= [[File:Site-Icon.png|100px|right|link=Main Page]] <span style="font-size:15px;"> Hello and welcome, '''{{BASEPAGENAME}}''', to the Game Development Wiki! We're glad to have you, and we hope you enjoy your stay. In case you haven't yet, please be sure to read our [[GDW:P|rules and policies]] and our [[GDW:EM|editing manual]] for a guide on our editing standards. *Have a question? Visit the [[Special:WikiForums|Forums]]! *Have something to report to the admins? Visit the [[Project:Administrator Noticeboard|Administrator Noticeboard]]. *Want to see who the administrators are? Find out [[project:Administrators|here]]. *Looking for something to do? See what's happening down at the [[Websites Wiki:Community portal|Community portal]]. *Want to see what's happened at the wiki recently? See the '''[[Special:RecentChanges|RecentChanges]]''' page. *Feel like a page is missing from the wiki? Why not [[Special:CreatePage|create]] it yourself? If you have any questions, don't be afraid to ask our [[Project:Administrators|administrators]] or ask on the [[Special:WikiForum|forums]]. Happy editing! </span> }} b1175616d1d8b83d700d021ea6f234ece44399d0 161 160 2023-02-08T22:06:50Z BlindCartographer 2 wikitext text/x-wiki == Welcome to The Wiki == {{Nbox |border= #c9c9c9 |header=<span style="font-family:Righteous; font-size:25px;><center>Welcome to the Gamedev Wiki, {{BASEPAGENAME}}!</center></span> |text= [[File:Site-Icon.png|100px|right|link=Main Page]] <span style="font-size:15px;"> Hello and welcome, '''{{BASEPAGENAME}}''', to the Game Development Wiki! We're glad to have you, and we hope you enjoy your stay. In case you haven't yet, please be sure to read our [[GDW:P|rules and policies]] and our [[GDW:EM|editing manual]] for a guide on our editing standards. *Have a question? Visit the [[Special:WikiForums|Forums]]! *Have something to report to the admins? Visit the [[Project:Administrator Noticeboard|Administrator Noticeboard]]. *Want to see who the administrators are? Find out [[project:Administrators|here]]. *Looking for something to do? See what's happening down at the [[Websites Wiki:Community portal|Community portal]]. *Want to see what's happened at the wiki recently? See the '''[[Special:RecentChanges|RecentChanges]]''' page. *Feel like a page is missing from the wiki? Why not [[Special:CreatePage|create]] it yourself? If you have any questions, don't be afraid to ask our [[Project:Administrators|administrators]] or ask on the [[Special:WikiForum|forums]]. Happy editing! </span> ---- <small>This is an automated message. Please do not respond directly as it is likely nobody will see your response.</small> }} 32955d953bbd4359df37e60fd2553e4b867424e3 MediaWiki:Newarticletext 8 69 162 2023-02-08T22:11:34Z BlindCartographer 2 Created page with "<div style="text-align: center; border: 2px solid green; padding: 10px; font-size: 125%;">[[File:Essay.png|45px|link=Special:MyPage/Sandbox]] Please make sure your page was created in your '''[[Special:MyPage/Sandbox|sandbox]]''' page before doing so here. Thank you!</div>" wikitext text/x-wiki <div style="text-align: center; border: 2px solid green; padding: 10px; font-size: 125%;">[[File:Essay.png|45px|link=Special:MyPage/Sandbox]] Please make sure your page was created in your '''[[Special:MyPage/Sandbox|sandbox]]''' page before doing so here. Thank you!</div> 45c57cabeab95570883de2393eb53670f0f4bfb2 User:BlindCartographer 2 5 163 17 2023-02-08T22:13:00Z BlindCartographer 2 wikitext text/x-wiki Hey, I'm BlindCartographer, the founder of this wiki, along with being a bureaucrat and Executive Wiki Manager around here. a18d02a6fd93c3c0229f503b08cf0d5479949b6f User talk:BlindCartographer 3 70 164 2023-02-08T22:13:29Z BlindCartographer 2 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User:BlindCartographer/sandbox 2 71 165 2023-02-08T22:14:55Z BlindCartographer 2 Created page with "{{User sandbox}}" wikitext text/x-wiki {{User sandbox}} d3c6c3118f4de6acb123f1044a362fecdbac12c6 Template:User sandbox 10 72 166 2023-02-08T22:16:55Z BlindCartographer 2 Created page with "{{Ombox |header = This is a sandbox page. |text = This page is a personal user sandbox, which means it is used by the respective owner to test and practice editing and formatting. It is not an article, but may be used to practice article creation. ---- |comment = (If you want to visit your own sandbox, click [[Special:MyPage/Sandbox|here]].) |image = [[File:Sandbox.png|45px|link=Category:User sandboxes]] |imagelink = Category:User sandboxes }} <include..." wikitext text/x-wiki {{Ombox |header = This is a sandbox page. |text = This page is a personal user sandbox, which means it is used by the respective owner to test and practice editing and formatting. It is not an article, but may be used to practice article creation. ---- |comment = (If you want to visit your own sandbox, click [[Special:MyPage/Sandbox|here]].) |image = [[File:Sandbox.png|45px|link=Category:User sandboxes]] |imagelink = Category:User sandboxes }} <includeonly>[[Category:User sandboxes]]</includeonly> <noinclude>[[Category:User management templates]]</noinclude> a409c25daad02e553190e309ec6f6ee2b271e14f Game Development Wiki:Administrators 4 73 167 2023-02-08T22:18:49Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Staff#Administrators]] wikitext text/x-wiki #REDIRECT [[Project:Staff#Administrators]] 62c303dbe2837ca54509564284adc3ef297c39eb 168 167 2023-02-08T22:19:08Z BlindCartographer 2 Protected "[[Game Development Wiki:Administrators]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Staff#Administrators]] 62c303dbe2837ca54509564284adc3ef297c39eb Game Development Wiki:Staff 4 74 169 2023-02-08T22:23:29Z BlindCartographer 2 Created page with "The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki." wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. 4b8a52a1fdf02dd2db885f4c7cdc169a2abdd048 170 169 2023-02-09T01:54:13Z BlindCartographer 2 wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a bureaucrat or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. 81402c736c9c12120744cfdb2a2328c4738e7440 Help:Group rights 12 75 171 2023-02-09T01:57:54Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Staff]] wikitext text/x-wiki #REDIRECT [[Project:Staff]] 23faceb28995f00f79487ab4151da22609f1dcb3 172 171 2023-02-09T01:58:06Z BlindCartographer 2 Protected "[[Help:Group rights]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Staff]] 23faceb28995f00f79487ab4151da22609f1dcb3 Game Development Wiki:Staff 4 74 173 170 2023-02-09T02:11:07Z BlindCartographer 2 wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a bureaucrat or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrats === === Administrators === === Interface Administrators === === Forum Administrator === === Rollbacker === == Non-Staff user groups == === Abusefilter Editor === === Autoconfirmed === === Autopatrolled === === Bot === === Confirmed === 3e37e65054617fe47d5164b915fa5362db02fe79 174 173 2023-02-09T02:28:50Z BlindCartographer 2 /* Bureaucrats */ wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a bureaucrat or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrats === '''Bureaucrats''' are users who share the same rights as administrators, but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrators === === Interface Administrators === === Forum Administrator === === Rollbacker === == Non-Staff user groups == === Abusefilter Editor === === Autoconfirmed === === Autopatrolled === === Bot === === Confirmed === d1d6dceb39cf7ba3f159c1458cb7f6a6f1875aa5 175 174 2023-02-09T02:29:15Z BlindCartographer 2 Protected "[[Game Development Wiki:Staff]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a bureaucrat or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrats === '''Bureaucrats''' are users who share the same rights as administrators, but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrators === === Interface Administrators === === Forum Administrator === === Rollbacker === == Non-Staff user groups == === Abusefilter Editor === === Autoconfirmed === === Autopatrolled === === Bot === === Confirmed === d1d6dceb39cf7ba3f159c1458cb7f6a6f1875aa5 176 175 2023-02-09T03:11:06Z BlindCartographer 2 wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Rollbacker|rollbackers]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, delete and undelete pages, lock and unlock pages, edit fully locked pages, edit the abusefilter, among other administrative duties. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === === Autoconfirmed === === Autopatrolled === === Bot === === Confirmed === === Founder === [[Category:{{SITENAME}}]] 903144979cbbf9cecedc58436490adf3ab64dfef 177 176 2023-02-09T03:28:08Z BlindCartographer 2 wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Rollbacker|rollbackers]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, delete and undelete pages, lock and unlock pages, edit fully locked pages, edit the abusefilter, among other administrative duties. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === '''Abusefilter editors''' are users who can edit and add [[Special:Abusefilter|abuse filters]], along with being able to view private abuse filters. They can also revert changes made by any given abuse filter. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current abusefilter editors can be found [[Special:ListUsers/abusefilter-editor|here]]. === Autoconfirmed === '''Autoconfirmed''' users are users who have been on the wiki for more than 4 days and have made at least 10 edits on the wiki. Autoconfirmed users have the ability to edit semi-protected pages, and the ability to skip CAPTCHAs. Since this makes up such a large majority of users and the bulk of all users, users in this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Autopatrolled === '''Autopatrolled''' users are users who's edits are automatically patrolled, so that an administrator doesn't have to do it manually. They can also patrol the edits of other users, and like autoconfirmed users, can skip CAPTCHAs. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Bot === '''Bot''' is a group which classifies a user as an automated process or bot. These users have their edits hidden in the [[Special:Recent Changes]] by default to prevent them from clogging the page (though you can view their recent actions by removing the "Human (not bot)" filter in Special:RecentChanges). In addition to that, they have certain other rights assigned to them to prevent them from getting caught in the CAPTCHAs, prevent them from getting caught in IP-based rate limits, among a few other rights to prevent any interference for legitimate bots. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current bots can be found [[Special:ListUsers/bot|here]]. === Confirmed === '''Confirmed''' users are users that have the exact same abilities as an [[Project:Staff#Autoconfirmed|autoconfirmed]] user, except they are manually promoted to this user group, unlike the autopromotion of autoconfirmed users. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Founder === The wiki '''founder''' is the user who is responsible for founding and creating the wiki. While the founder is currently staff and executive wiki manager, if and when he retires, he will no longer be staff, which is why this role is not considered to be staff. The founder role has no additional rights or abilities. The wiki founder is [[User:BlindCartographer|BlindCartographer]]. [[Category:{{SITENAME}}]] 33e618fbf656553929603d92bd1405913b5ea5ab 178 177 2023-02-09T03:28:40Z BlindCartographer 2 /* Bot */ wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Rollbacker|rollbackers]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, delete and undelete pages, lock and unlock pages, edit fully locked pages, edit the abusefilter, among other administrative duties. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === '''Abusefilter editors''' are users who can edit and add [[Special:Abusefilter|abuse filters]], along with being able to view private abuse filters. They can also revert changes made by any given abuse filter. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current abusefilter editors can be found [[Special:ListUsers/abusefilter-editor|here]]. === Autoconfirmed === '''Autoconfirmed''' users are users who have been on the wiki for more than 4 days and have made at least 10 edits on the wiki. Autoconfirmed users have the ability to edit semi-protected pages, and the ability to skip CAPTCHAs. Since this makes up such a large majority of users and the bulk of all users, users in this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Autopatrolled === '''Autopatrolled''' users are users who's edits are automatically patrolled, so that an administrator doesn't have to do it manually. They can also patrol the edits of other users, and like autoconfirmed users, can skip CAPTCHAs. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Bot === '''Bot''' is a group which classifies a user as an automated process or bot. These users have their edits hidden in the [[Special:RecentChanges]] by default to prevent them from clogging the page (though you can view their recent actions by removing the "Human (not bot)" filter in Special:RecentChanges). In addition to that, they have certain other rights assigned to them to prevent them from getting caught in the CAPTCHAs, prevent them from getting caught in IP-based rate limits, among a few other rights to prevent any interference for legitimate bots. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current bots can be found [[Special:ListUsers/bot|here]]. === Confirmed === '''Confirmed''' users are users that have the exact same abilities as an [[Project:Staff#Autoconfirmed|autoconfirmed]] user, except they are manually promoted to this user group, unlike the autopromotion of autoconfirmed users. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Founder === The wiki '''founder''' is the user who is responsible for founding and creating the wiki. While the founder is currently staff and executive wiki manager, if and when he retires, he will no longer be staff, which is why this role is not considered to be staff. The founder role has no additional rights or abilities. The wiki founder is [[User:BlindCartographer|BlindCartographer]]. [[Category:{{SITENAME}}]] 2d9502f6c867fb568f914180348dc56e7ff0701d 179 178 2023-02-09T03:32:11Z BlindCartographer 2 wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Rollbacker|rollbackers]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, delete and undelete pages, lock and unlock pages, edit fully locked pages, edit the abusefilter, among other administrative duties. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === '''Abusefilter editors''' are users who can edit and add [[Special:Abusefilter|abuse filters]], along with being able to view private abuse filters. They can also revert changes made by any given abuse filter. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current abusefilter editors can be found [[Special:ListUsers/abusefilter-editor|here]]. === Autoconfirmed === '''Autoconfirmed''' users are users who have been on the wiki for more than 4 days and have made at least 10 edits on the wiki. Autoconfirmed users have the ability to edit semi-protected pages, and the ability to skip CAPTCHAs. Since this makes up such a large majority of users and the bulk of all users, users in this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Autopatrolled === '''Autopatrolled''' users are users who's edits are automatically patrolled, so that an administrator doesn't have to do it manually. They can also patrol the edits of other users, and like autoconfirmed users, can skip CAPTCHAs. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Bot === '''Bot''' is a group which classifies a user as an automated process or bot. These users have their edits hidden in the [[Special:RecentChanges]] by default to prevent them from clogging the page (though you can view their recent actions by removing the "Human (not bot)" filter in Special:RecentChanges). In addition to that, they have certain other rights assigned to them to prevent them from getting caught in the CAPTCHAs, prevent them from getting caught in IP-based rate limits, among a few other rights to prevent any interference for legitimate bots. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current bots can be found [[Special:ListUsers/bot|here]]. === Confirmed === '''Confirmed''' users are users that have the exact same abilities as an [[Project:Staff#Autoconfirmed|autoconfirmed]] user, except they are manually promoted to this user group, unlike the autopromotion of autoconfirmed users. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Founder === The wiki '''founder''' is the user who is responsible for founding and creating the wiki. While the founder is currently staff and executive wiki manager, if and when he retires, he will no longer be staff, which is why this role is not considered to be staff. The founder role has no additional rights or abilities. The wiki founder is [[User:BlindCartographer|BlindCartographer]]. == Promotion == The methods of promotion to different user groups can be found [[Project:Promotion to staff|here]]. [[Category:{{SITENAME}}]] dc96bcb66065c6565754b0e2355fb1d5436ab962 GDW:Staff 0 76 180 2023-02-09T03:34:11Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Staff]] wikitext text/x-wiki #REDIRECT [[Project:Staff]] 23faceb28995f00f79487ab4151da22609f1dcb3 181 180 2023-02-09T03:34:31Z BlindCartographer 2 Protected "[[GDW:Staff]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Staff]] 23faceb28995f00f79487ab4151da22609f1dcb3 MediaWiki:Sidebar 8 25 182 58 2023-02-09T03:36:45Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Game Development Wiki ** GDW:P|Policies ** GDW:EM|Editing manual ** Special:AllPages|All pages ** GDW:Staff|Wiki staff ** Project:Administrator Noticeboard|Administrator noticeboard * SEARCH * TOOLBOX * LANGUAGES 6b46ee42d0e51dd58a581d0f9e36679b36e2afd0 183 182 2023-02-09T03:37:06Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** GDW:P|Policies ** GDW:EM|Editing manual ** Special:AllPages|All pages ** GDW:Staff|Wiki staff ** Project:Administrator Noticeboard|Administrator noticeboard * SEARCH * TOOLBOX * LANGUAGES b1168c59f675893b5b96215d92681af2881b89df 187 183 2023-02-09T03:47:36Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** GDW:P|Policies ** GDW:EM|Editing manual ** Special:WikiForum|Forums ** GDW:Staff|Wiki staff ** Project:Administrator Noticeboard|Administrator noticeboard * SEARCH * TOOLBOX * LANGUAGES f507d64d8cfa17862589e960590c3612e2f16db0 188 187 2023-02-09T03:49:02Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** GDW:P|Policies ** GDW:EM|Editing manual ** Special:WikiForum|Forums ** Special:AllPages|All pages ** GDW:Staff|Wiki staff ** Project:Administrator Noticeboard|Administrator noticeboard * SEARCH * TOOLBOX * LANGUAGES ed4ff17fef83c0fe12482229ff0b269a6dad0229 189 188 2023-02-09T03:50:45Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** GDW:P|Policies ** GDW:EM|Editing manual ** Special:WikiForum|Forums ** Special:AllPages|All pages ** GDW:Staff|Wiki staff ** Project:Administrator Noticeboard|Administrator noticeboard ** Project:Community portal|Community portal * SEARCH * TOOLBOX * LANGUAGES 3152f9524c609adb37970ba8fbfe342565a0c271 User:BlindCartographer 2 5 184 163 2023-02-09T03:40:22Z BlindCartographer 2 wikitext text/x-wiki Hey, I'm BlindCartographer, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and [[Project:Executive Wiki Manager|Executive Wiki Manager]] around here. 977086af71c4fcbc06c860959858beaa48533606 185 184 2023-02-09T03:40:37Z BlindCartographer 2 wikitext text/x-wiki Hey, I'm BlindCartographer, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and [[Project:Staff#Executive Wiki Manager|Executive Wiki Manager]] around here. 0986c906116e6ad5e783a2d291c7a6948f645be4 186 185 2023-02-09T03:43:57Z BlindCartographer 2 wikitext text/x-wiki Hey, I'm BlindCartographer, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. 9bb8c51015cf97dab3c1509b096ff3b98a688e58 Game Development Wiki:Policy 4 44 190 91 2023-02-09T04:04:49Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} There are certain '''rules''' and '''policies''' that every user, both registered and non-registered, must follow. Noncompliance with the rules will result in the appropriate actions being taken by [[GDW:Staff|wiki staff]], which may be as minor as an edit reversion or as major as an indefinite ban. [[Category:{{SITENAME}}]] e584f318a813d52cb0f2791ee665a139c04d1416 Game Development Wiki:Tutorial articles 4 77 191 2023-02-09T04:11:29Z BlindCartographer 2 Created page with "On the Gamedev Wiki, there are certain pages that are made to function as tutorials for the viewer and guide them through a given process of game design and development. These pages are known as [[Category:Tutorials|Tutorial articles]]." wikitext text/x-wiki On the Gamedev Wiki, there are certain pages that are made to function as tutorials for the viewer and guide them through a given process of game design and development. These pages are known as [[Category:Tutorials|Tutorial articles]]. 5e23a37087dab7937382906d6da456d92bf35429 192 191 2023-02-09T04:13:22Z BlindCartographer 2 wikitext text/x-wiki On the Gamedev Wiki, there are certain pages that are made to function as tutorials for the viewer and guide them through a given process of game design and development. These pages are known as <noinclude>[[Category:Tutorials|Tutorial articles]]</noinclude>. [[Category:{{SITENAME}}]] 540fbdb8e2f8b666c3070e8a1e757856688fc085 193 192 2023-02-09T04:18:29Z BlindCartographer 2 wikitext text/x-wiki On the Gamedev Wiki, there are certain pages that are made to function as tutorials for the viewer and guide them through a given process of game design and development. These pages are known as '''Tutorial articles'''. [[Category:{{SITENAME}}]] 36042d5a2a4b764baf3aec7392632afb33ee7fa1 Template:Mbox 10 59 194 126 2023-02-09T04:20:35Z BlindCartographer 2 wikitext text/x-wiki <templatestyles src="Template:Mbox/styles.css" />{{#invoke:Message box|mbox}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 7b8d47b1dc6790d74f085219229ff7d558e1c145 Template:Mbox/styles.css 10 79 197 196 2023-02-09T04:27:39Z BlindCartographer 2 1 revision imported from [[:meta:Template:Mbox/styles.css]] sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } 70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31 Module:Message box/configuration 828 19 198 42 2023-02-09T04:34:15Z BlindCartographer 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } b6f0151037e6867b577c8cca32ff297e48697a10 Module:Message box/styles.css 828 80 199 2023-02-09T04:34:26Z BlindCartographer 2 Created page with "/** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, whi..." sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } 70a64e18a5edf35b8f5debf06fbf0ed6bfa91d31 Module:Message box 828 15 200 128 2023-02-09T04:34:58Z BlindCartographer 2 Scribunto text/plain require('Module:No globals') local getArgs local yesno = require('Module:Yesno') local lang = mw.language.getContentLanguage() local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <span class='date-container'><i>(<span class='date'>%s</span>)</i></span>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end -- set templatestyles self.base_templatestyles = cfg.templatestyles self.templatestyles = args.templatestyles end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end local frame = mw.getCurrentFrame() root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.base_templatestyles }, }) -- Add support for a single custom templatestyles sheet. Undocumented as -- need should be limited and many templates using mbox are substed; we -- don't want to spread templatestyles sheets around to arbitrary places if self.templatestyles then root:wikitext(frame:extensionTag{ name = 'templatestyles', args = { src = self.templatestyles }, }) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):addClass('mbox-image-div') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('span') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):addClass('mbox-image-div') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :addClass('mbox-invalid-type') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) fd6a8b1a0ac5916465cdf2eb099825f1d006cfba Module:Message box/ombox.css 828 81 201 2023-02-09T04:36:22Z BlindCartographer 2 Created page with "/* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1p..." sanitized-css text/css /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 8fe3df4bb607e699eab2dbd23bd4a1a446391002 Module:Message box/ambox.css 828 82 202 2023-02-09T04:37:08Z BlindCartographer 2 Created page with "/** * {{ambox}} (article message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ambox { /* 10% = Will not overlap with other elements */ margin: 0 10%; border: 1px solid #a2a9b1; /* Default "notice" blue */ border-left: 10px solid #36c; background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. */ table.ambox + table.ambox, table.ambox + link + table.amb..." sanitized-css text/css /** * {{ambox}} (article message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ambox { /* 10% = Will not overlap with other elements */ margin: 0 10%; border: 1px solid #a2a9b1; /* Default "notice" blue */ border-left: 10px solid #36c; background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. */ table.ambox + table.ambox, table.ambox + link + table.ambox, table.ambox + style + table.ambox { margin-top: -1px; } /* An empty narrow cell */ .ambox td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ .ambox th.mbox-text, .ambox td.mbox-text { border: none; /* 0.5em left/right */ padding: 0.25em 0.5em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ .ambox td.mbox-image { /* 0.5em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.5em; } /* The right image cell */ .ambox td.mbox-imageright { /* 0px left, 0.5em right */ /* @noflip */ padding: 2px 0.5em 2px 0; } table.ambox-notice { /* Blue */ border-left-color: #36c; } table.ambox-speedy { /* Pink */ background-color: #fee7e6; } table.ambox-delete, table.ambox-speedy { /* Red */ border-left-color: #b32424; } table.ambox-content { /* Orange */ border-left-color: #f28500; } table.ambox-style { /* Yellow */ border-left-color: #fc3; } table.ambox-move { /* Purple */ border-left-color: #9932cc; } table.ambox-protection { /* Gray-gold */ border-left-color: #a2a9b1; } /** * {{ambox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".ambox" classes. "html body.mediawiki .ambox" * is so they override both "table.ambox + table.ambox" * and "table.ambox + link + table.ambox" above. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .ambox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } /* For the "small=left" option. */ html body.mediawiki .ambox.mbox-small-left { margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } 4ab2531b7ba01a7c7843df32663c660b70275aad Module:Message box/fmbox.css 828 83 203 2023-02-09T04:38:09Z BlindCartographer 2 Created page with "/* {{pp|small=y}} */ .fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } .fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } .fmbox-editnotice { background-color: transparent; } .fmbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .fmbox .mbox-image { border: no..." sanitized-css text/css /* {{pp|small=y}} */ .fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } .fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } .fmbox-editnotice { background-color: transparent; } .fmbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .fmbox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .fmbox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } .fmbox .mbox-invalid-type { text-align: center; } fca0f5e4b400e4a2ab158b219c52822451211d66 Module:Message box/tmbox.css 828 84 204 2023-02-09T04:38:32Z BlindCartographer 2 Created page with "/** * {{tmbox}} (talk page message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.tmbox { margin: 4px 10%; border-collapse: collapse; /* Default "notice" gray-brown */ border: 1px solid #c0c090; background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { /* reset the min-width of tmbox above */ min-width: 0; } /** * For tmboxes inside other templates. "bo..." sanitized-css text/css /** * {{tmbox}} (talk page message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.tmbox { margin: 4px 10%; border-collapse: collapse; /* Default "notice" gray-brown */ border: 1px solid #c0c090; background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { /* reset the min-width of tmbox above */ min-width: 0; } /** * For tmboxes inside other templates. "body.mediawiki" ensures that * this declaration overrides other styles (including mbox-small above) */ body.mediawiki .mbox-inside .tmbox { margin: 2px 0; /* For Safari and Opera */ width: 100%; } .mbox-inside .tmbox.mbox-small { /** * "small" tmboxes should not be small when also "nested", * so reset styles that are set in ".tmbox.mbox-small" below. */ line-height: 1.5em; font-size: 100%; } /* An empty narrow cell */ td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ th.mbox-text, td.mbox-text { border: none; /* 0.9em left/right */ padding: 0.25em 0.9em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ td.mbox-image { border: none; /* 0.9em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } /* The right image cell */ td.mbox-imageright { border: none; /* 0px left, 0.9em right */ /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } table.tmbox-speedy { /* Pink */ background-color: #fee7e6; } table.tmbox-delete, table.tmbox-speedy { /* Red */ border-color: #b32424; border-width: 2px; } table.tmbox-content { /* Orange */ border-color: #f28500; border-width: 2px; } table.tmbox-style { /* Yellow */ border-color: #fc3; border-width: 2px; } table.tmbox-move { /* Purple */ border-color: #9932cc; border-width: 2px; } table.tmbox-protection, table.tmbox-notice { /* Gray-brown */ border-color: #c0c090; border-width: 1px; } /** * {{tmbox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".tmbox" classes. "html body.mediawiki .tmbox" * is so they apply only to talk page message boxes. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .tmbox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } 17413bb9de8527d49f25416233a0dda2e9086a55 Template:Policy page 10 43 205 139 2023-02-09T15:38:17Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = protection | image = [[File:Site-Icon.png|50px|link=Main Page]] | text = <center>'''This page documents a [[GDW:P|Game Development Wiki policy]]'''.</center> It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. All wiki users should follow it, and changes made to it should be discussed on the [[{{TALKPAGENAME}}|talk page]]. | small = {{{small|left}}} / left / no | plainlinks = no }}<includeonly>[[Category:{{SITENAME}}]]</includeonly> 65191dc4e6f4ed2cdc82922b5b0bf3271f5c2344 206 205 2023-02-09T15:42:05Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = protection | image = [[File:Site-Icon.png|50px|link=Main Page]] | text = <center>'''This page documents a [[GDW:P|Game Development Wiki policy]]'''.</center> It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. All wiki users should follow it, and changes made to it should be discussed on the [[{{TALKPAGENAME}}|talk page]]. | small = {{{small|left}}} / left / no | plainlinks = no }} <br />{{#ifeq:{{{demo}}}|yes||<includeonly>{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{{category|[[Category:{{SITENAME}}|{{{Sortkey|{{PAGENAME}}}}}]]}}}}}</includeonly>}}<noinclude>{{Documentation}}[[Category:Header templates]]</noinclude> 073f9392f4db5e4950853bdd56d2e93580f41f6c Template:Note/styles.css 10 12 207 28 2023-02-09T17:08:06Z BlindCartographer 2 BlindCartographer moved page [[Template:Note/style.css]] to [[Template:Note/styles.css]] without leaving a redirect sanitized-css text/css /** Note Template Styling **/ .note { background-position: left 7px top 50%; padding: 0.5em 0.5em 0.5em 40px; margin: 0.5em 0; overflow: hidden; background-color: #f8f9fa; background-repeat: no-repeat; border: 1px solid #ddd; } .note-inline { display: inline-block; vertical-align: middle; } .note-info { background-color: #f6efe5; background-image: url(https://upload.wikimedia.org/wikipedia/commons/d/d5/OOjs_UI_icon_reference_20_ac6600.svg); background-size: 25px; border-color: #ac6600; padding-left: 40px; min-height: 28px; } .note-reminder { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-warn { background-color: #fff9ea; background-image: url(https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg); background-size: 25px; border-color: #fc3; min-height: 28px; } .note-error { background-color: #fee7e6; background-image: url(https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg); background-size: 25px; border-color: #c33; min-height: 28px; } fe0d3d43e528b234ee8c08115d9315f01b94b482 Template:NSFW article 10 85 208 2023-02-09T17:08:22Z BlindCartographer 2 Created page with "{{Note|This article features explicit or NSFW content. Viewer discretion is advised.|error}}" wikitext text/x-wiki {{Note|This article features explicit or NSFW content. Viewer discretion is advised.|error}} 44b4daadd8c7069e2d90dbf69926b317bf9f97b5 Template:Note 10 11 209 54 2023-02-09T17:14:30Z BlindCartographer 2 wikitext text/x-wiki <templatestyles src="Template:Note/styles.css" /> <onlyinclude>{{#if: {{#if:{{{1|{{{text|}}}}}}|{{{1|{{{text|}}}}}}|{{#if:<noinclude>demo</noinclude>|demo|{{{demo|}}}}} }} | <div role="note" class="note note-{{#switch: {{{2|{{{type|}}}}}} |gotcha=error |=info |#default={{{2|{{{type|}}}}}} }} {{#ifeq:{{{inline|}}}|1|note-inline}}">{{{1|{{{text}}}}}}</div> }}<!-- --></onlyinclude> d398c1cdde51447b3e7ef8b70c9fc101d8cfdbdd Game Development Wiki:Administrator Noticeboard 4 86 210 2023-02-16T00:28:24Z BlindCartographer 2 Created page with "The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (usi..." wikitext text/x-wiki The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{tlx|delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center>{{Button|{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}}|Add new report}}</center> <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] 23ecff01553cf474077ce62a0c24a5ebde54159a 212 210 2023-02-16T00:29:28Z BlindCartographer 2 wikitext text/x-wiki The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center>{{Button|{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}}|Add new report}}</center> <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] 05cbcc3fb8694ab2335512a9c7de7c126c358fec 214 212 2023-02-16T00:35:02Z BlindCartographer 2 wikitext text/x-wiki The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <div style="text-align:right;">{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}}|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Add new report</span> <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] 6b0b11001c80eabb76509298e559844f4d74f471 Template:Tlx 10 87 211 2023-02-16T00:29:09Z BlindCartographer 2 Created page with "<includeonly><code><nowiki>{{</nowiki>{{#if:{{{subst|}}}|[[wikipedia:Help:Substitution|subst]]:}}[[{{{LANG|}}}{{{SISTER|}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}}| &#124;{{{2}}} }}<!-- -->{{#if:{{{3|}}}| &#124;{{{3}}} }}<!-- -->{{#if:{{{4|}}}| &#124;{{{4}}} }}<!-- -->{{#if:{{{5|}}}| &#124;{{{5}}} }}<!-- -->{{#if:{{{6|}}}| &#124;{{{6}}} }}<!-- -->{{#if:{{{7|}}}| &#124;{{{7}}} }}<!-- -->{{#if:{{{8|}}}| &#124;{{{8}}} }}<!-- -->{{#if:{{{9|}}}| &#124;{{{9}}}..." wikitext text/x-wiki <includeonly><code><nowiki>{{</nowiki>{{#if:{{{subst|}}}|[[wikipedia:Help:Substitution|subst]]:}}[[{{{LANG|}}}{{{SISTER|}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}}| &#124;{{{2}}} }}<!-- -->{{#if:{{{3|}}}| &#124;{{{3}}} }}<!-- -->{{#if:{{{4|}}}| &#124;{{{4}}} }}<!-- -->{{#if:{{{5|}}}| &#124;{{{5}}} }}<!-- -->{{#if:{{{6|}}}| &#124;{{{6}}} }}<!-- -->{{#if:{{{7|}}}| &#124;{{{7}}} }}<!-- -->{{#if:{{{8|}}}| &#124;{{{8}}} }}<!-- -->{{#if:{{{9|}}}| &#124;{{{9}}} }}<!-- -->{{#if:{{{10|}}}| &#124;{{{10}}} }}<!-- -->{{#if:{{{11|}}}| &#124;{{{11}}} }}<!-- -->{{#if:{{{12|}}}| &#124;''...'' }}<nowiki>}}</nowiki></code></includeonly><noinclude>[[Category:Templates]]</noinclude> c619c92076bfbad40f96a5eec534762128a54f6d Template:Button 10 88 213 2023-02-16T00:32:36Z BlindCartographer 2 Created page with "{{#switch:{{lc:{{{position|{{{2|}}}}}}}}|c|center = <center>|#default = }}<span class="custom-wds-wrapper plainlinks" style="{{#switch:{{lc:{{{position|{{{3|}}}}}}}}<!-- -->| l<!-- -->| left = float: left; margin-right: 3px<!-- -->| r<!-- -->| right = float: right; margin-left: 3px<!-- -->| #default = margin: 0 1.5px<!-- -->}}<!-- -->}};">{{#if:{{{elink|{{{link|{{{1|}}}}}}}}}<!-- -->| {{#switch:{{#sub:{{{elink|{{{link|{{{1|}}}}}}}}}|0|4}}<!--..." wikitext text/x-wiki {{#switch:{{lc:{{{position|{{{2|}}}}}}}}|c|center = <center>|#default = }}<span class="custom-wds-wrapper plainlinks" style="{{#switch:{{lc:{{{position|{{{3|}}}}}}}}<!-- -->| l<!-- -->| left = float: left; margin-right: 3px<!-- -->| r<!-- -->| right = float: right; margin-left: 3px<!-- -->| #default = margin: 0 1.5px<!-- -->}}<!-- -->}};">{{#if:{{{elink|{{{link|{{{1|}}}}}}}}}<!-- -->| {{#switch:{{#sub:{{{elink|{{{link|{{{1|}}}}}}}}}|0|4}}<!-- -->| {{#sub:{{SERVER}}|0|4}}<!-- -->| http = [{{{eink|{{{1|{{fullurl:Template:Button}}}}}}}} <span title="{{{tooltip|{{{text|{{{link|{{{1|}}}}}}}}}}}}" class="wds-button {{{class|}}}" style="cursor:pointer; {{#if:{{{style|}}}|{{{style}}}}}">{{{text|{{{2|{{{link|{{{1|Link}}}}}}}}}}}}</span>]<!-- -->| #default = {{#switch:{{#sub:{{{1|}}}|0|1}}<!-- -->| /<!-- -->| : = [[{{{link|{{{1|Template:Button}}}}}}|<span {{#if:{{{tooltip|}}}|title="{{{tooltip}}}"}} class="wds-button {{{class|}}}" style="cursor:pointer; {{#if:{{{style|}}}|{{{style}}}}}">{{{text|{{{2|{{{link|{{{1|Link}}}}}}}}}}}}</span>]]<!-- -->| #default = [[:{{{link|{{{1|Template:Button}}}}}}|<span {{#if:{{{tooltip|}}}|title="{{{tooltip}}}"}} class="wds-button {{{class|}}}" style="cursor:pointer; {{#if:{{{style|}}}|{{{style}}}}}">{{{text|{{{2|{{{link|{{{1|Link}}}}}}}}}}}}</span>]]<!-- -->}}<!-- -->}}<!-- -->| <span {{#if:{{{tooltip|}}}|title="{{{tooltip}}}"}} class="wds-button {{{class|}}} wds-is-disabled" {{#if:{{{style|}}}|style="{{{style}}}"}}>{{{text|{{{2|Button}}}}}}</span><!-- -->}} </span>{{#switch:{{lc:{{{position|{{{2|}}}}}}}}|c|center = </center>|#default = }} 19359900776b167057d53558413b18e3b84e19d6 Template:Tutorial page 10 89 215 2023-03-06T01:28:41Z BlindCartographer 2 Created page with "{| style="margin: 10px auto; padding: 2px; width: 70%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|80px|link=Project:Tutorial articles]] | style="text-align: center; font-size: 25px;"|'''Tutorial article''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part of game development. |}<noinclude>Category:T..." wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 70%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|80px|link=Project:Tutorial articles]] | style="text-align: center; font-size: 25px;"|'''Tutorial article''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part of game development. |}<noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> bee95b83615d08f6d4528d568ad49a80de0a5fa9 217 215 2023-03-06T02:45:03Z BlindCartographer 2 wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 60%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|65px|link=Project:Tutorial articles]] | style="text-align: left;"|'''This is a [[Project:Tutorial articles|Tutorial article]].''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part, idea, or method of game development. {{#if: {{{status|}}}| ---- {{#switch:{{{status|}}} |#default= '''Status:''' <span style="color: #808080;" title="This tutorial has not yet been reviewed.">Unreviewed</span> |approved= '''Status:''' <span style="color: #07d100;" title="This tutorial has been approved">Approved</span> |under revision= '''Status:''' <span style="color: #ff8000;" title="This tutorial is under review and may not meet up to our standards.">Under revision</span> |disapproved= '''Status:''' <span style="color: #ff8000;" title="This tutorial does not meet up to our standards and should be corrected as soon as possible.">Disapproved</span> }} }} |}<noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> f1ccec7d54c446892087b63f53dcd92b70fef0fb 218 217 2023-03-06T02:47:50Z BlindCartographer 2 wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 60%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|65px|link=Project:Tutorial articles]] | style="text-align: left;"|'''This is a [[Project:Tutorial articles|Tutorial article]].''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part, idea, or method of game development. {{#if: {{{status}}}| ---- {{#switch:{{{status}}} |#default= '''Status:''' <span style="color: #808080;" title="This tutorial has not yet been reviewed.">'''Unreviewed'''</span> |approved= '''Status:''' <span style="color: #07d100;" title="This tutorial has been approved">'''Approved'''</span> |under revision= '''Status:''' <span style="color: #ff8000;" title="This tutorial is under review and may not meet up to our standards.">'''Under revision'''</span> |disapproved= '''Status:''' <span style="color: #ff8000;" title="This tutorial does not meet up to our standards and should be corrected as soon as possible.">'''Disapproved'''</span> }} }} |}<noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> 5f96bdc3b592835a208bfd27107007b574a2e53f 219 218 2023-03-06T02:49:02Z BlindCartographer 2 wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 60%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|65px|link=Project:Tutorial articles]] | style="text-align: left;"|'''This is a [[Project:Tutorial articles|Tutorial article]].''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part, idea, or method of game development. {{#if: {{{status}}}| ---- {{#switch:{{{status}}} |#default= '''Status:''' <span style="color: #808080;" title="This tutorial has not yet been reviewed.">'''Unreviewed'''</span> |approved= '''Status:''' <span style="color: #07d100;" title="This tutorial has been approved">'''Approved'''</span> |under revision= '''Status:''' <span style="color: #ff8000;" title="This tutorial is under review and may not meet up to our standards.">'''Under revision'''</span> |disapproved= '''Status:''' <span style="color: #ff0000;" title="This tutorial does not meet up to our standards and should be corrected as soon as possible.">'''Disapproved'''</span> }} }} |}<noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> a31112d8a7668456acee0a8a74e4646abc0a8294 221 219 2023-03-06T02:49:57Z BlindCartographer 2 Protected "[[Template:Tutorial page]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 60%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|65px|link=Project:Tutorial articles]] | style="text-align: left;"|'''This is a [[Project:Tutorial articles|Tutorial article]].''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part, idea, or method of game development. {{#if: {{{status}}}| ---- {{#switch:{{{status}}} |#default= '''Status:''' <span style="color: #808080;" title="This tutorial has not yet been reviewed.">'''Unreviewed'''</span> |approved= '''Status:''' <span style="color: #07d100;" title="This tutorial has been approved">'''Approved'''</span> |under revision= '''Status:''' <span style="color: #ff8000;" title="This tutorial is under review and may not meet up to our standards.">'''Under revision'''</span> |disapproved= '''Status:''' <span style="color: #ff0000;" title="This tutorial does not meet up to our standards and should be corrected as soon as possible.">'''Disapproved'''</span> }} }} |}<noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> a31112d8a7668456acee0a8a74e4646abc0a8294 Game Development Wiki:About 4 62 216 156 2023-03-06T02:12:53Z BlindCartographer 2 wikitext text/x-wiki {{Infobox website |title1=<center><span style="font-family: Righteous;">Gamedev Wiki</span></center> |image1= [[File:Site-Logo.png|link=Main Page]] |type_of_site= Encyclopedic Wiki |language(s)=English |written_in= [[wikipedia:Help:Wikitext|Wikitext]] [[wikipedia:Lua (programming language)|Lua]] [[wikipedia:CSS|CSS]] [[wikipedia:JavaScript|JavaScript]] [[wikipedia:PHP|PHP]] |registration=Optional |founded=February 7th, 2023 |founder(s)=[[User:BlindCartographer|BlindCartographer]] |status=Active |url= [[Main Page|gamedev.miraheze.org]] }} The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, {{NUMBEROFFILES}} files, and {{NUMBEROFUSERS}} users. It was founded by [[User:BlindCartographer|BlindCartographer]] on February 7th, 2023, using the wiki-farm [[m:Miraheze|Miraheze]]. == History == The Gamedev Wiki was founded on February 7th, 2023, by [[User:BlindCartographer|BlindCartographer]]. It was founded in an attempt to give a central encyclopedia and advice hub about game development. [[Category:{{SITENAME}}]] c1826b60e0b523e2a99059c8dc83dd2692cb76ed User:BlindCartographer/sandbox 2 71 220 165 2023-03-06T02:49:23Z BlindCartographer 2 wikitext text/x-wiki {{User sandbox}} {{Tutorial page}} {{Tutorial page|status=approved}} {{Tutorial page|status=under revision}} {{Tutorial page|status=disapproved}} 2f2234c00f0a9050cecd6f8494267a066ea8a34a Template:Ombox 10 42 222 87 2023-03-06T02:55:09Z BlindCartographer 2 wikitext text/x-wiki <div id="ombox" style="padding: 10px;"> {| style="margin: 10px auto; background-color: {{{background|#F8F9FA}}}; padding: 2px; width: {{{width|70%}}}; border: 1px solid {{{border color|#A2A9B1}}};" | rowspan="2" style="text-align: left; width: 15%"|{{{image|[[File:Information icon4.png|45px]]}}} |- valign="middle" | <div style="text-align: center;">'''{{{header| }}}'''</div>{{{text| }}} <small>{{{comment|}}}</small> |} </div> 111db3db5737427c551c7c1b200fa071d1a0d04c Template:Ombox 10 42 223 222 2023-03-06T02:56:18Z BlindCartographer 2 wikitext text/x-wiki <div id="ombox" style="padding: 10px;"> {| style="margin: 10px auto; background-color: {{{background|#F8F9FA}}}; padding: 2px; width: {{{width|70%}}}; border: 1px solid {{{border color|#A2A9B1}}};" | rowspan="2" style="text-align: center; width: 15%"|{{{image|[[File:Information icon4.png|45px]]}}} |- valign="middle" | <div style="text-align: center;">'''{{{header| }}}'''</div>{{{text| }}} <small>{{{comment|}}}</small> |} </div> 7c3f360a726636151ae0ba8886f608dbd8615e69 Template:Stub 10 47 224 132 2023-03-06T03:11:08Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = notice | image = [[File:Information icon4.png|45px|link=Main Page]] | text = <center>'''This article is a stub'''.</center> This article requires some more information, as it is too short. If you think you have any good information, <div class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this page!]</div> | small = {{{small|left}}} / left / no | plainlinks = no }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 55870c15c397bd464b6c2a37478b9deba36228f1 225 224 2023-03-06T04:29:45Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = notice | image = [[File:Information icon4.png|45px|link=Main Page]] | text = <center>'''This article is a stub'''.</center> This article requires some more information, as it is too short. If you believe you have some good information to add to this article, please do so! | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 3121961d811165a0cd8fb49f1af48525986e8335 226 225 2023-03-06T04:30:05Z BlindCartographer 2 Protected "[[Template:Stub]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = notice | image = [[File:Information icon4.png|45px|link=Main Page]] | text = <center>'''This article is a stub'''.</center> This article requires some more information, as it is too short. If you believe you have some good information to add to this article, please do so! | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 3121961d811165a0cd8fb49f1af48525986e8335 MediaWiki:Sidebar 8 25 227 189 2023-03-06T04:32:08Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** Game Development Wiki:Policy|Policies ** Game Development Wiki:Editing manual|Editing manual ** Special:WikiForum|Forums ** Special:AllPages|All pages ** Game Development Wiki:Staff|Wiki staff ** Project:Administrator Noticeboard|Administrator noticeboard ** Project:Community portal|Community portal * SEARCH * TOOLBOX * LANGUAGES f154bccb609f8e9292a9c5532a1f345a04de281d Game Development Wiki:Moderation 4 90 228 2023-03-06T04:56:52Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Staff#Moderators]] wikitext text/x-wiki #REDIRECT [[Project:Staff#Moderators]] 9163fb71380d54c39885ac3020cfdb018c68be52 229 228 2023-03-06T04:57:05Z BlindCartographer 2 Protected "[[Game Development Wiki:Moderation]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Staff#Moderators]] 9163fb71380d54c39885ac3020cfdb018c68be52 230 229 2023-03-06T04:59:32Z BlindCartographer 2 Changed redirect target from [[Game Development Wiki:Staff#Moderators]] to [[Game Development Wiki:Staff#Moderator]] wikitext text/x-wiki #REDIRECT [[Project:Staff#Moderator]] e75ccd10a47c87dd76edcb1b54fa757853570c99 Game Development Wiki:Staff 4 74 231 179 2023-03-06T05:11:37Z BlindCartographer 2 wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Moderator|Moderators]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, mass delete pages, and edit the abusefilter, among other many other administrative duties and rights. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. == Moderator == '''Moderators''' are users who can delete/undelete pages, protect/unprotect pages, and edit protected pages, along with having the rights of a [[Project:Staff#Rollbacker|rollbacker]]. They also have the ability to edit, delete/undelete, protect/undelete, and move files. The list of all current interface admins can be found [[Special:ListUsers/moderator|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === '''Abusefilter editors''' are users who can edit and add [[Special:Abusefilter|abuse filters]], along with being able to view private abuse filters. They can also revert changes made by any given abuse filter. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current abusefilter editors can be found [[Special:ListUsers/abusefilter-editor|here]]. === Autoconfirmed === '''Autoconfirmed''' users are users who have been on the wiki for more than 4 days and have made at least 10 edits on the wiki. Autoconfirmed users have the ability to edit semi-protected pages, and the ability to skip CAPTCHAs. Since this makes up such a large majority of users and the bulk of all users, users in this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Autopatrolled === '''Autopatrolled''' users are users who's edits are automatically patrolled, so that an administrator doesn't have to do it manually. They can also patrol the edits of other users, and like autoconfirmed users, can skip CAPTCHAs. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Bot === '''Bot''' is a group which classifies a user as an automated process or bot. These users have their edits hidden in the [[Special:RecentChanges]] by default to prevent them from clogging the page (though you can view their recent actions by removing the "Human (not bot)" filter in Special:RecentChanges). In addition to that, they have certain other rights assigned to them to prevent them from getting caught in the CAPTCHAs, prevent them from getting caught in IP-based rate limits, among a few other rights to prevent any interference for legitimate bots. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current bots can be found [[Special:ListUsers/bot|here]]. === Confirmed === '''Confirmed''' users are users that have the exact same abilities as an [[Project:Staff#Autoconfirmed|autoconfirmed]] user, except they are manually promoted to this user group, unlike the autopromotion of autoconfirmed users. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Founder === The wiki '''founder''' is the user who is responsible for founding and creating the wiki. While the founder is currently staff and executive wiki manager, if and when he retires, he will no longer be staff, which is why this role is not considered to be staff. The founder role has no additional rights or abilities. The wiki founder is [[User:BlindCartographer|BlindCartographer]]. == Promotion == The methods of promotion to different user groups can be found [[Project:Promotion to staff|here]]. [[Category:{{SITENAME}}]] 2c2944575b2108d4778523bdbfd49f5bf373eaa2 232 231 2023-03-06T05:13:00Z BlindCartographer 2 /* Moderator */ wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Moderator|Moderators]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, mass delete pages, and edit the abusefilter, among other many other administrative duties and rights. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. === Moderator === '''Moderators''' are users who can delete/undelete pages, protect/unprotect pages, and edit protected pages, along with having the rights of a [[Project:Staff#Rollbacker|rollbacker]]. They also have the ability to edit, delete/undelete, protect/undelete, and move files. The list of all current moderators can be found [[Special:ListUsers/moderator|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === '''Abusefilter editors''' are users who can edit and add [[Special:Abusefilter|abuse filters]], along with being able to view private abuse filters. They can also revert changes made by any given abuse filter. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current abusefilter editors can be found [[Special:ListUsers/abusefilter-editor|here]]. === Autoconfirmed === '''Autoconfirmed''' users are users who have been on the wiki for more than 4 days and have made at least 10 edits on the wiki. Autoconfirmed users have the ability to edit semi-protected pages, and the ability to skip CAPTCHAs. Since this makes up such a large majority of users and the bulk of all users, users in this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Autopatrolled === '''Autopatrolled''' users are users who's edits are automatically patrolled, so that an administrator doesn't have to do it manually. They can also patrol the edits of other users, and like autoconfirmed users, can skip CAPTCHAs. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Bot === '''Bot''' is a group which classifies a user as an automated process or bot. These users have their edits hidden in the [[Special:RecentChanges]] by default to prevent them from clogging the page (though you can view their recent actions by removing the "Human (not bot)" filter in Special:RecentChanges). In addition to that, they have certain other rights assigned to them to prevent them from getting caught in the CAPTCHAs, prevent them from getting caught in IP-based rate limits, among a few other rights to prevent any interference for legitimate bots. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current bots can be found [[Special:ListUsers/bot|here]]. === Confirmed === '''Confirmed''' users are users that have the exact same abilities as an [[Project:Staff#Autoconfirmed|autoconfirmed]] user, except they are manually promoted to this user group, unlike the autopromotion of autoconfirmed users. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Founder === The wiki '''founder''' is the user who is responsible for founding and creating the wiki. While the founder is currently staff and executive wiki manager, if and when he retires, he will no longer be staff, which is why this role is not considered to be staff. The founder role has no additional rights or abilities. The wiki founder is [[User:BlindCartographer|BlindCartographer]]. == Promotion == The methods of promotion to different user groups can be found [[Project:Promotion to staff|here]]. [[Category:{{SITENAME}}]] 2f18b9fbfb11b36296ffd59f1cf661ac3f06aca2 Game Development Wiki:Policy 4 44 233 190 2023-03-06T05:25:13Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} There are certain '''rules''' and '''policies''' that every user, both registered and non-registered, must follow. Noncompliance with the rules will result in the appropriate actions being taken by [[GDW:Staff|wiki staff]], which may be as minor as an edit reversion or as major as an indefinite ban. If a rule seems unclear, please ask a current member of the [[Project:Staff|wiki staff]] for clarification. Rules concerning edit/page quality can be found [[Project:Editing manual|here]]. == General Rules == ===Rule Zero=== Nobody is above the rules. All users, whether staff or not, are subject to punishment if necessary. There should be absolutely no favoritism, and attempting to find loopholes in the rules will not let you avoid punishment. ===Vandalism=== Vandalism or any sort of disruptive edits is strictly prohibited. The deliberate act of removing or destroying content on the wiki as well as purposefully spreading false or nonsensical information will not be tolerated. This applies to all articles and images. Acts of vandalism are always done maliciously; making an unhelpful edit by mistake cannot be considered vandalism. Vandalistic edits will be reverted and result in a warning and a block following afterwards if it continues. ===Wiki Content=== The wiki is primarily meant for the documentation of game development and anything related to it. Incredibly short pages will be deleted after 24 hours if it does not eventually get over 1,200 bytes. Rule breaking content will be removed. The first few offense will result in a warning. Further offenses or multiple offenses done in a short period of time will be counted as vandalism, resulting in either a lengthy or indefinite block. Adding explicitly NSFW or NSFL content will result in an immediate block. The wiki does not cover individual games. ===Copyright Violations=== Adding articles or files about websites that violate copyright or violating copyright in any way is unacceptable. Any and all forms of copyright violation will be removed. Any form of intentional copyright violations will result in an indefinite block. ===Page Creation=== You can create any page you want, as long as it is relevant to the wikis overarching topic. Do not create irrelevant or spam pages, as that will result in immediate action. Make sure all pages at least mildly follow the [[Project:Editing manual|Editing manual]]. Please make a page on your [[Special:MyPage/Sandbox|Sandbox]] page before making it an article. Rule breaking content will be removed. Varying amounts of warnings and blocks may be handed out depending on the situation. ===Sockpuppetry=== The general rule is one editor, one account. Do not use multiple accounts to mislead, deceive, vandalize or disrupt; to create the illusion of greater support for a position; to stir up controversy; or to circumvent a block, ban, or sanction. Do not ask your family or friends to create accounts to support you. Do not revive old unused accounts and use them as different users, or use another person's account. Normal alts are fine, but don't use them maliciously. Upon being found out, an indefinite block will be put in place for both accounts. ===Spamming Edits/Edit Farming=== Do not spam edits. This behavior is disruptive and clutters an article's history. This can range from writing the same thing over and over across an article to adding several unnecessary links to making several edits that consist of adding something then quickly undoing it. Creating pages over and over is also considered spam. Spamming in an article is generally seen as vandalism. Any form of spam is forbidden. Edits will be reverted. Offending users will be warned and may be blocked if they continue. ===Edit Wars=== An edit war is where two users undo each of their edits in one page due to a disagreement between each other. If you are in a situation where you are edit warring with someone, please message them on their message wall. Explain your reasoning as to why your edit should be published with research to back-up your reasoning. If the edit war continues after discussing, please contact an admin or content moderators. If you are the user with incorrect information, or your edits were not published, please do not harass or get frustrated with the people that were involved. Pages subject to edit warring will be temporarily locked, and users will be warned. Users continuing afterwards may be blocked. ===Behavior & Civility=== All contributors are expected to act civil and courteous towards other users. If there is a dispute, try and work it out peacefully with the other user, or just back away. Trolling is also not allowed, and will result in a punishment if it does not stop. Offending users will be warned. Users continuing after the warning(s) will be blocked. ===Spamming=== Do not spam. This behavior is annoying and can clutter a discussion. This can range from copypastas to needlessly long breaks to writing in a very distracting font. Making the same or very similar comments multiple times is also considered spam. Encouraging users to spam is also forbidden. Offending users will be warned. Users continuing after the warning will be blocked. ===Usernames=== Any username that is explicit, rude, inappropriate, derogatory, or in any way inappropriate will result in the account under the inappropriate username being permanently blocked. Usernames that advertise groups are also not allowed, nor are usernames that impersonate another user, a group, or well-known famous person. The user is allowed to make another account under a different and more appropriate name, however. == Blocking == <small>A more in-depth blocking policy can be found [[Project:Policy/Blocking policy|here]]</small> <br> Blocks can be assigned to users by [[Project:Administrators|administrators]] when the situation calls for it. Certain blocks may mildly deviate from the general length for any given reason, albeit rarely. The third block given to any user for any reason will be '''indefinite'''. === Appeals === If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. Only the blocked user can appeal their block, no third party may do so for another user. == Other Policies == * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] e195c37caf77b60cf3fdc36410fea7191073ba03 Template:Delete 10 91 234 2023-03-06T06:05:40Z BlindCartographer 2 Created page with "{{Mbox | demospace = {{{demospace|}}} main | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for deletion]] | text = <center>'''This article is a candidate for deletion.'''</center> This page has been marked as a candidate for deletion by a member of the community. {{#if: {{{1|}}}|&nbsp;for the following reason(s):'''{{{1}}}.|'''}} If you want to discuss the potential deletion of this page or contest the potential deletion, please visit..." wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for deletion]] | text = <center>'''This article is a candidate for deletion.'''</center> This page has been marked as a candidate for deletion by a member of the community. {{#if: {{{1|}}}|&nbsp;for the following reason(s):'''{{{1}}}.|'''}} If you want to discuss the potential deletion of this page or contest the potential deletion, please visit the pages talk page or improve the page and remove the '''<code><nowiki>{{delete}}</nowiki></code>''' tag. <small>(''Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deleting.'')</small> | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Candidates for deletion]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 9a8d9454fcd018471303f1bc0bebe172de49f76c 235 234 2023-03-06T06:05:52Z BlindCartographer 2 Protected "[[Template:Delete]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for deletion]] | text = <center>'''This article is a candidate for deletion.'''</center> This page has been marked as a candidate for deletion by a member of the community. {{#if: {{{1|}}}|&nbsp;for the following reason(s):'''{{{1}}}.|'''}} If you want to discuss the potential deletion of this page or contest the potential deletion, please visit the pages talk page or improve the page and remove the '''<code><nowiki>{{delete}}</nowiki></code>''' tag. <small>(''Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deleting.'')</small> | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Candidates for deletion]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 9a8d9454fcd018471303f1bc0bebe172de49f76c Template:Speedy delete 10 92 236 2023-03-06T06:11:16Z BlindCartographer 2 Created page with "{{Mbox | demospace = {{{demospace|}}} main | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for speedy deletion]] | text = <center>'''This article is a candidate for speedy deletion.'''</center> This page has been marked as a candidate for speedy deletion by a member of the community. That means it is in '''extreme''' violations of the rules. {{#if: {{{1|}}}|&nbsp;It is marked as such for the following reason(s):'''{{{1}}}.|'''}} <br /..." wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for speedy deletion]] | text = <center>'''This article is a candidate for speedy deletion.'''</center> This page has been marked as a candidate for speedy deletion by a member of the community. That means it is in '''extreme''' violations of the rules. {{#if: {{{1|}}}|&nbsp;It is marked as such for the following reason(s):'''{{{1}}}.|'''}} <br /> If you want to discuss the potential deletion of this page (whether it be to contest the deletion or give extra reasoning not covered by the reasons given above), please visit the pages talk page, or improve the page and remove the '''<code><nowiki>{{delete}}</nowiki></code>''' tag. <small>(''Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deleting.'')</small> | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Candidates for speedy deletion]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> be85cccb83daf6e6541da0a2fe3a68463396d14e 237 236 2023-03-06T06:11:28Z BlindCartographer 2 Protected "[[Template:Speedy delete]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for speedy deletion]] | text = <center>'''This article is a candidate for speedy deletion.'''</center> This page has been marked as a candidate for speedy deletion by a member of the community. That means it is in '''extreme''' violations of the rules. {{#if: {{{1|}}}|&nbsp;It is marked as such for the following reason(s):'''{{{1}}}.|'''}} <br /> If you want to discuss the potential deletion of this page (whether it be to contest the deletion or give extra reasoning not covered by the reasons given above), please visit the pages talk page, or improve the page and remove the '''<code><nowiki>{{delete}}</nowiki></code>''' tag. <small>(''Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deleting.'')</small> | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Candidates for speedy deletion]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> be85cccb83daf6e6541da0a2fe3a68463396d14e Template:Cleanup 10 93 238 2023-03-06T06:16:28Z BlindCartographer 2 Created page with "{{Mbox | demospace = {{{demospace|}}} main | type = content | image = [[File:Ambox important.webp|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article is a candidate for cleanup.'''</center> This article requires some cleaning up to meet the wiki's [[Project:Editing manual|quality standards]]. If you think you can help it fit the standards better, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this article!] '''Reason:''' {{#if: {{{1|..." wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = content | image = [[File:Ambox important.webp|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article is a candidate for cleanup.'''</center> This article requires some cleaning up to meet the wiki's [[Project:Editing manual|quality standards]]. If you think you can help it fit the standards better, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this article!] '''Reason:''' {{#if: {{{1|}}}|''{{{1}}}''|''No reason given''}}. | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Candidates for cleanup]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> f6267f7f82b3108d440f4a4ef8d191cbedee8c66 239 238 2023-03-06T06:16:38Z BlindCartographer 2 Protected "[[Template:Cleanup]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = content | image = [[File:Ambox important.webp|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article is a candidate for cleanup.'''</center> This article requires some cleaning up to meet the wiki's [[Project:Editing manual|quality standards]]. If you think you can help it fit the standards better, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this article!] '''Reason:''' {{#if: {{{1|}}}|''{{{1}}}''|''No reason given''}}. | small = {{{small|left}}} / left / no }} <includeonly>[[Category:Candidates for cleanup]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> f6267f7f82b3108d440f4a4ef8d191cbedee8c66 Template:Button 10 88 240 213 2023-03-06T06:38:10Z BlindCartographer 2 wikitext text/x-wiki <span class="mw-ui-button {{#switch: {{{color|white}}} | red = mw-ui-destructive | green = mw-ui-progressive | white = | blue = mw-ui-progressive}}" role="button" aria-disabled="false">{{{text|{{{1|Button text}}}}}}</span><noinclude>{{Documentation}} </noinclude> 65daa5cd0dc70790380e7f7ee00cd9dd2c9d4568 Game Development Wiki:Administrator Noticeboard 4 86 241 214 2023-03-06T06:44:26Z BlindCartographer 2 wikitext text/x-wiki The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|Delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center><div class="plainlinks">[{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}} {{Button|Add new report|color=blue}}]</div></center> <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] 1149c86f47736f4129071afe6b78325c985ef9cd 242 241 2023-03-06T06:44:33Z BlindCartographer 2 /* Test */ new section wikitext text/x-wiki The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|Delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center><div class="plainlinks">[{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}} {{Button|Add new report|color=blue}}]</div></center> <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] == Test == Test [[User:BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]]) 06:44, 6 March 2023 (UTC) 6c040fe9f48f00596a942de2b29297dc6a97c56b 243 242 2023-03-06T06:45:06Z BlindCartographer 2 Undo revision 242 by [[Special:Contributions/BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]]) wikitext text/x-wiki The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|Delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center><div class="plainlinks">[{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}} {{Button|Add new report|color=blue}}]</div></center> <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] 1149c86f47736f4129071afe6b78325c985ef9cd File:Unity logo.png 6 94 244 2023-03-06T17:48:42Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:gdscript.png 6 95 245 2023-03-06T17:55:13Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Infobox programming language 10 96 246 2023-03-06T17:55:28Z BlindCartographer 2 Created page with "<infobox> <title source="title1"> <default>{{PAGENAME}}</default> </title> <image source="image1"> <caption source="caption1"/> </image> <data source="filename_extension"> <label>Filename extension</label> </data> <data source="format"> <label>Format</label> </data> <data source="developer(s)"> <label>Developer(s)</label> </data> <data source="initial_release"> <label>Initial release</label> </data> <data source="latest_r..." wikitext text/x-wiki <infobox> <title source="title1"> <default>{{PAGENAME}}</default> </title> <image source="image1"> <caption source="caption1"/> </image> <data source="filename_extension"> <label>Filename extension</label> </data> <data source="format"> <label>Format</label> </data> <data source="developer(s)"> <label>Developer(s)</label> </data> <data source="initial_release"> <label>Initial release</label> </data> <data source="latest_release"> <label>Latest release</label> </data> </infobox> b07deaff3b3b2f2b473ccb13144e7d46c2a0503b 247 246 2023-03-06T17:55:54Z BlindCartographer 2 Protected "[[Template:Infobox programming language]]": Important to wiki ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) wikitext text/x-wiki <infobox> <title source="title1"> <default>{{PAGENAME}}</default> </title> <image source="image1"> <caption source="caption1"/> </image> <data source="filename_extension"> <label>Filename extension</label> </data> <data source="format"> <label>Format</label> </data> <data source="developer(s)"> <label>Developer(s)</label> </data> <data source="initial_release"> <label>Initial release</label> </data> <data source="latest_release"> <label>Latest release</label> </data> </infobox> b07deaff3b3b2f2b473ccb13144e7d46c2a0503b MediaWiki:Common.css 8 37 248 150 2023-03-06T18:07:05Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /** Mbox Styling **/ .mbox { --type-important: rgba(200, 0, 0, 0.8); --type-moderate: rgba(233, 124, 47, 0.8); --type-minor: rgba(241, 197, 37, 0.8); display: flex; position: relative; background-color: #FBFBFB; border: 1px solid #A2A9B1; border-left-width: 8px; border-left-color: #d6d6d6; border-radius: 0px; margin-bottom: 5px; min-height: 32px; } .mbox.mbox-type-important { border-left-color: var(--type-important); } .mbox.mbox-type-moderate { border-left-color: var(--type-moderate); } .mbox.mbox-type-minor { border-left-color: var(--type-minor); } .mbox__content { display: table; box-sizing: border-box; width: 100%; padding: 8px 15px; } .mbox__content__image { display: table-cell; width: 40px; height: 100%; text-align: center; vertical-align: middle; padding-right: 15px; } .mbox__content__wrapper { display: table-cell; vertical-align: middle; } .mbox__content__header { display: block; font-weight: bold; } .mbox__content__text { display: block; } .mbox__content__text__comment { font-size: small; } .mbox__content__aside { display: table-cell; width: 100px; vertical-align: middle; text-align: center; padding-left: 15px; border-left: 1px solid #d6d6d6; } .mbox__close { position: absolute; right: 0; top: 0; padding: 2px 7px; font-weight: bold; font-size: 16px; color: #bbb; cursor: pointer; transition: all .15s ease-in; } .mbox__close:hover { color: #777; } .mbox__close:after { content: '×'; } .mw-collapsed + .mbox__close { transform: rotate(45deg); padding: 4px 7px 5px 2px; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } 1a01af75de61688f66e21c52f63b3fc4e42b91b4 249 248 2023-03-06T18:08:07Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } 11f20da3e61871a3071f7005f431e2ab11243874 Gdscript 0 97 250 2023-03-06T18:08:48Z BlindCartographer 2 Created page with "{{Infobox programming language | title1= Gdscript | image1= [[File:gdscript.png]] | caption1= An example of Gdscript | filename_extension= .gd | format= Object-orientated programming | developer(s)=[[Godot]] | initial_release=January 14th, 2014 | latest_release= March 1st, 2023 }} {{Stub}} '''Gdscript'''" wikitext text/x-wiki {{Infobox programming language | title1= Gdscript | image1= [[File:gdscript.png]] | caption1= An example of Gdscript | filename_extension= .gd | format= Object-orientated programming | developer(s)=[[Godot]] | initial_release=January 14th, 2014 | latest_release= March 1st, 2023 }} {{Stub}} '''Gdscript''' f77a83e9f47856f842dee26958f56919c50dc487 Game Development Wiki:About 4 62 251 216 2023-03-06T18:11:47Z BlindCartographer 2 wikitext text/x-wiki {{Infobox website |title1=<center><span style="font-family: Righteous;">Gamedev Wiki</span></center> |image1= [[File:Site-Logo.png|link=Main Page]] |type_of_site= Encyclopedic Wiki |language(s)=English |written_in= [[wikipedia:Help:Wikitext|Wikitext]] [[wikipedia:Lua (programming language)|Lua]] [[wikipedia:CSS|CSS]] [[wikipedia:JavaScript|JavaScript]] [[wikipedia:PHP|PHP]] |registration=Optional |founded=February 7th, 2023 |founder(s)=[[User:BlindCartographer|BlindCartographer]] |status=Active |url= [[Main Page|gamedev.miraheze.org]] }} The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, {{NUMBEROFFILES}} files, and {{NUMBEROFUSERS}} users. It was founded by [[User:BlindCartographer|BlindCartographer]] on February 7th, 2023, using the wiki-farm [[m:Miraheze|Miraheze]]. == History == The Gamedev Wiki was founded on February 7th, 2023, by [[User:BlindCartographer|BlindCartographer]]. It was founded in an attempt to give a central encyclopedia and advice hub about game development. The first article added was [[Gdscript]] on March 6th, 2023. [[Category:{{SITENAME}}]] cf880a4823fdab885e95c43ba22ee2f220193f56 255 251 2023-03-07T00:14:58Z BlindCartographer 2 wikitext text/x-wiki {{Infobox website |title1=<center><span style="font-family: Righteous;">Gamedev Wiki</span></center> |image1= [[File:Site-Logo.png|link=Main Page]] |type_of_site= Encyclopedic Wiki |language(s)=English |written_in= [[wikipedia:Help:Wikitext|Wikitext]] [[wikipedia:Lua (programming language)|Lua]] [[wikipedia:CSS|CSS]] [[wikipedia:JavaScript|JavaScript]] [[wikipedia:PHP|PHP]] |registration=Optional |founded=February 7th, 2023 |founder(s)=[[User:BlindCartographer|BlindCartographer]] |status=Active |url= [[Main Page|gamedev.miraheze.org]] }} The '''Game Development Wiki''', better known as the '''Gamedev Wiki''', is an online encyclopedia about all things game development. Currently, it has {{NUMBEROFARTICLES}} articles, {{NUMBEROFFILES}} files, and {{NUMBEROFUSERS}} users. It was founded by [[User:BlindCartographer|BlindCartographer]] on February 7th, 2023, using the wiki-farm [[m:Miraheze|Miraheze]]. == History == The Gamedev Wiki was founded on February 7th, 2023, by [[User:BlindCartographer|BlindCartographer]]. It was founded in an attempt to give a central encyclopedia and advice hub about game development. The first article added was [[Gdscript]] on March 6th, 2023. [[Category:{{SITENAME}}]] 9d794f14d99a61fbdfa97cf506fc74c787909fea Tutorial:Installing Godot 3000 98 252 2023-03-06T21:45:15Z BlindCartographer 2 Created page with "{{Tutorial page}}" wikitext text/x-wiki {{Tutorial page}} df74b8024a24b6f7e5bb2ea03dab3c68166322ab 253 252 2023-03-06T23:46:16Z BlindCartographer 2 wikitext text/x-wiki {{Tutorial page}} [[Godot]] is an open-source, lightweight, and cross-platform game engine that allows the user to create and develop 2d and 3d video games. This article is a guide on how to '''install Godot''' and the most recent release of it. == Downloading Godot == # Visit [https://godotengine.org/ godotengine.org]. [[Category:Tutorials]] [[Category:Godot tutorials]] [[Category:Installation tutorials]] 42ad6397a11f112dea47a8de198e2003fa5e2447 259 253 2023-03-07T00:21:09Z BlindCartographer 2 wikitext text/x-wiki {{Tutorial page}} [[Godot]] is an open-source, lightweight, and cross-platform game engine that allows the user to create and develop 2d and 3d video games. This article is a guide on how to '''install Godot''' and the most recent release of it. This tutorial can also be used for updating Godot. == Downloading Godot == # Visit [https://godotengine.org/ godotengine.org]. # Go to [https://godotengine.org/download godotengine.org/download] and download the latest version. It should automatically navigate to the version for your Operating System. # Extract the .zip file and run Godot. It is self-contained and should not require and compiling. == Updating Godot == [[File:godotimport.png|200px|thumb|right|The import button on Godot]] # Follow the instructions above for [[Tutorial:Installing Godot#Downloading Godot|downloading Godot]]. # Do not delete any existing files or directories for any games you have developed on Godot. # Open Godot and click the "Import" button, and import the directory containing the files for your game(s) that were on the previous edition of Godot. == Notes == * Godot does not need to be compiled, only extracted from the .zip file. It can then be run directly afterwards. == See also == [[Category:Godot tutorials]] [[Category:Installation tutorials]] 20940587b15033b3215a0e511954a5f2fc33697b 264 259 2023-03-07T00:41:26Z BlindCartographer 2 wikitext text/x-wiki {{Tutorial page|status=approved}} [[Godot]] is an open-source, lightweight, and cross-platform game engine that allows the user to create and develop 2d and 3d video games. This article is a guide on how to '''install Godot''' and the most recent release of it. This tutorial can also be used for updating Godot. == Downloading Godot == # Visit [https://godotengine.org/ godotengine.org]. # Go to [https://godotengine.org/download godotengine.org/download] and download the latest version. It should automatically navigate to the version for your Operating System. # Extract the .zip file and run Godot. It is self-contained and should not require and compiling. == Updating Godot == [[File:godotimport.png|200px|thumb|right|The import button on Godot]] # Follow the instructions above for [[Tutorial:Installing Godot#Downloading Godot|downloading Godot]]. # Do not delete any existing files or directories for any games you have developed on Godot. # Open Godot and click the "Import" button, and import the directory containing the files for your game(s) that were on the previous edition of Godot. == Notes == * Godot does not need to be compiled, only extracted from the .zip file. It can then be run directly afterwards. == See also == [[Category:Godot tutorials]] [[Category:Installation tutorials]] 727be268da2b03e027aa2b645b7d1e14df2cc068 Template:Tutorial page 10 89 254 221 2023-03-06T23:51:03Z BlindCartographer 2 wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 60%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|65px|link=Project:Tutorial articles]] | style="text-align: left;"|'''This is a [[Project:Tutorial articles|Tutorial article]].''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part, idea, or method of game development. {{#if: {{{status}}}| ---- {{#switch:{{{status}}} |#default= '''Status:''' <span style="color: #808080;" title="This tutorial has not yet been reviewed.">'''Unreviewed'''</span> <includeonly>[[Category:Unreviewed tutorials]]</includeonly> |approved= '''Status:''' <span style="color: #07d100;" title="This tutorial has been approved">'''Approved'''</span> <includeonly>[[Category:Approved tutorials]]</includeonly> |under revision= '''Status:''' <span style="color: #ff8000;" title="This tutorial is under review and may not meet up to our standards.">'''Under revision'''</span> <includeonly>[[Category:Under revision tutorials]]</includeonly> |disapproved= '''Status:''' <span style="color: #ff0000;" title="This tutorial does not meet up to our standards and should be corrected as soon as possible.">'''Disapproved'''</span> <includeonly>[[Category:Disapproved tutorials]]</includeonly> }} }} |} <includeonly>[[Category:Tutorials]]</includeonly> <noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> 575ac246dc0ea835be38b07f886ce0499916d53d 257 254 2023-03-07T00:17:08Z BlindCartographer 2 wikitext text/x-wiki {| style="margin: 10px auto; padding: 2px; width: 60%; border-radius: 5px; border: 3px solid green;" | rowspan="2" style="text-align: center; width: 15%"|[[File:Site-Icon.png|center|65px|link=Project:Tutorial articles]] | style="text-align: left;"|'''This is a [[Project:Tutorial articles|Tutorial article]].''' |- valign="middle" |This article is a [[Project:Tutorial articles|Tutorial article]], which means it is meant as a guide on a certain part, idea, or method of game development. {{#if: {{{status}}}| ---- {{#switch:{{{status}}} |#default= '''Status:''' <span style="color: #808080;" title="This tutorial has not yet been reviewed.">'''Unreviewed'''</span> <includeonly>[[Category:Unreviewed tutorials]]</includeonly> |approved= '''Status:''' <span style="color: #07d100;" title="This tutorial has been approved">'''Approved'''</span> <includeonly>[[Category:Approved tutorials]]</includeonly> |under revision= '''Status:''' <span style="color: #ff8000;" title="This tutorial is under review and may not meet up to our standards.">'''Under revision'''</span> <includeonly>[[Category:Under revision tutorials]]</includeonly> |disapproved= '''Status:''' <span style="color: #ff0000;" title="This tutorial does not meet up to our standards and should be corrected as soon as possible.">'''Disapproved'''</span> <includeonly>[[Category:Disapproved tutorials]]</includeonly> }} }} |} <includeonly>[[Category:Tutorials]]</includeonly> <noinclude> {{Documentation}} [[Category:Templates|{{PAGENAME}}]]</noinclude> ff2270ddb804981da222521a062494b4e33d35b2 Category:Templates 14 99 256 2023-03-07T00:15:38Z BlindCartographer 2 Created page with "This category includes all [[mw:Help:Templates|templates]] on the [[Main Page|Game Development Wiki]]." wikitext text/x-wiki This category includes all [[mw:Help:Templates|templates]] on the [[Main Page|Game Development Wiki]]. 5b7cf7866c77d3e0be2c7828f753f1e094491b96 File:godotimport.png 6 100 258 2023-03-07T00:18:31Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Tutorial talk 10 101 260 2023-03-07T00:39:30Z BlindCartographer 2 Created page with "{{Ombox |background=#F8EABA |border color=#C0C090 |image=[[File:Ambox important blue.svg|45px|link=]] |header=This is a tutorial talk page. |text=This talk page should be used for the discussion of '''[[Tutorial:{{BASEPAGENAME}}|{{BASEPAGENAME}}]]'''. If you have questions or are seeking further information about something that was not discussed enough in the main tutorial, please ask them here. Do not remove any questions on this page unless you plan on adding the answe..." wikitext text/x-wiki {{Ombox |background=#F8EABA |border color=#C0C090 |image=[[File:Ambox important blue.svg|45px|link=]] |header=This is a tutorial talk page. |text=This talk page should be used for the discussion of '''[[Tutorial:{{BASEPAGENAME}}|{{BASEPAGENAME}}]]'''. If you have questions or are seeking further information about something that was not discussed enough in the main tutorial, please ask them here. Do not remove any questions on this page unless you plan on adding the answer and how to achieve it on the main article. ---- |comment= Please check to see if any available archives have the answers you seek before posting here. }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 677c9c8a5d077cb043e0cc8a1e1fdcd15ddb1e43 261 260 2023-03-07T00:39:41Z BlindCartographer 2 Protected "[[Template:Tutorial talk]]" ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)) wikitext text/x-wiki {{Ombox |background=#F8EABA |border color=#C0C090 |image=[[File:Ambox important blue.svg|45px|link=]] |header=This is a tutorial talk page. |text=This talk page should be used for the discussion of '''[[Tutorial:{{BASEPAGENAME}}|{{BASEPAGENAME}}]]'''. If you have questions or are seeking further information about something that was not discussed enough in the main tutorial, please ask them here. Do not remove any questions on this page unless you plan on adding the answer and how to achieve it on the main article. ---- |comment= Please check to see if any available archives have the answers you seek before posting here. }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 677c9c8a5d077cb043e0cc8a1e1fdcd15ddb1e43 262 261 2023-03-07T00:40:05Z BlindCartographer 2 wikitext text/x-wiki {{Ombox |background=#F8EABA |border color=#C0C090 |image=[[File:Ambox important blue.svg|45px|link=]] |header=This is a tutorial talk page. |text=This talk page should be used for the discussion of '''[[Tutorial:{{BASEPAGENAME}}|{{BASEPAGENAME}}]]'''. If you have questions or are seeking further information about something that was not discussed enough in the main tutorial, please ask them here. Do not remove any questions on this page unless you plan on adding the answer and how to achieve it on the main article. ---- |comment= Please check to see if any available archives have the answers you seek before posting here. }} <noinclude> {{Documentation}} [[Category:Templates]] [[Category:Talk page management templates]] </noinclude> c3a20f496ce93c944a3f6b4c4523d765deb144e6 Tutorial talk:Installing Godot 3001 102 263 2023-03-07T00:40:40Z BlindCartographer 2 Created page with "{{Tutorial talk}}" wikitext text/x-wiki {{Tutorial talk}} 2bcb2458642cacc45f118f8aebf0ffdc0fcea10a Template:Tutorial talk/doc 10 103 265 2023-03-07T00:44:40Z BlindCartographer 2 Created page with "The '''Tutorial talk''' template is meant to be added at the top of all Tutorial talk pages. It details what to do when you have come to ask a question about the main tutorial. == Usage == If you want to add this template to a talk page, you may add {{Tlx|Tutorial talk}} at the top of the discussion page." wikitext text/x-wiki The '''Tutorial talk''' template is meant to be added at the top of all Tutorial talk pages. It details what to do when you have come to ask a question about the main tutorial. == Usage == If you want to add this template to a talk page, you may add {{Tlx|Tutorial talk}} at the top of the discussion page. a6c1220a6f6fa5e7a48789ad587c5e6fac2b7c56 Module:Userbox 828 104 266 2023-03-07T00:48:16Z BlindCartographer 2 Created page with "-- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default valu..." Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-c'] or args[2] or '#eeeeee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args['info-fc'] or args[8] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNum(args['id1-s'], 14) data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNum(args['id2-s'], 14) data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :attr('role', 'presentation') :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('td') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('td') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end local legible = true local contrast = require('Module:Color contrast')._ratio local function has_text(wikitext) wikitext = wikitext:gsub("]]", "|]]") wikitext = wikitext:gsub("%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]", "") wikitext = wikitext:gsub("%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]", "") wikitext = wikitext:gsub("%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]", "") return mw.text.trim(wikitext) ~= "" end if contrast { data.infoColor, data.backgroundColor, error = 0 } < 4.5 then legible = false end -- For bold text >= 14pt, requirement is only 3. local idContrastThreshold = 4.5 local id2ContrastThreshold = 4.5 if (data.idFontSize or 0) >= 14 then idContrastThreshold = 3 end if (data.id2FontSize or 0) >= 14 then id2ContrastThreshold = 3 end if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } < idContrastThreshold then if has_text(data.id or "") then legible = false end end if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } < id2ContrastThreshold then if has_text(data.id2 or "") then legible = false end end if not legible then root:wikitext('[[Category:Userboxes with insufficient color contrast]]') end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 cats[#cats + 1] = args.usercategory4 cats[#cats + 1] = args.usercategory5 -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with templates in the wrong namespace]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) end return p 3afddd38f65cb302185911fa9957526a85855673 268 266 2023-03-07T01:20:32Z BlindCartographer 2 Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-c'] or args[2] or '#eeeeee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args['info-fc'] or args[8] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNum(args['id1-s'], 14) data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNum(args['id2-s'], 14) data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :attr('role', 'presentation') :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('td') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('td') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 cats[#cats + 1] = args.usercategory4 cats[#cats + 1] = args.usercategory5 -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with templates in the wrong namespace]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) end return p 9d3887b42e51595757267f56521eb259b941a71b Template:Userbox 10 105 267 2023-03-07T00:49:58Z BlindCartographer 2 Created page with "{{#invoke:userbox|userbox}}<noinclude> {{Documentation}} [[Category:Templates]] [[Category:Userboxes]] </noinclude>" wikitext text/x-wiki {{#invoke:userbox|userbox}}<noinclude> {{Documentation}} [[Category:Templates]] [[Category:Userboxes]] </noinclude> 81b85635425ca6c8e2515620b25e655c8dc9bcae 269 267 2023-03-07T01:20:50Z BlindCartographer 2 wikitext text/x-wiki {{#invoke:Userbox|userbox}}<noinclude> {{Documentation}} [[Category:Templates]] [[Category:Userboxes]] </noinclude> 58666540ec0da88830becc75cf1630401c1e370f 270 269 2023-03-07T01:21:24Z BlindCartographer 2 Protected "[[Template:Userbox]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{#invoke:Userbox|userbox}}<noinclude> {{Documentation}} [[Category:Templates]] [[Category:Userboxes]] </noinclude> 58666540ec0da88830becc75cf1630401c1e370f File:Gamedev-admin-logo.png 6 106 271 2023-03-07T02:31:16Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 272 271 2023-03-07T02:31:30Z BlindCartographer 2 Protected "[[File:Gamedev-admin-logo.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Gamedev-moderator-logo.png 6 107 273 2023-03-07T02:31:58Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 274 273 2023-03-07T02:32:13Z BlindCartographer 2 Protected "[[File:Gamedev-moderator-logo.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Gamedev-bureaucrat-logo.png 6 108 275 2023-03-07T02:32:35Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 276 275 2023-03-07T02:32:56Z BlindCartographer 2 Protected "[[File:Gamedev-bureaucrat-logo.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Gamedev-manager-logo.png 6 109 277 2023-03-07T02:33:41Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 278 277 2023-03-07T02:33:56Z BlindCartographer 2 Protected "[[File:Gamedev-manager-logo.png]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite) [Upload=Allow only administrators] (indefinite)) wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Gamedev-rollbacker-logo.png 6 110 279 2023-03-07T02:34:21Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Gamedev-interfaceadmin-logo.png 6 111 280 2023-03-07T02:34:44Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Gamedev-forumstaff-logo.png 6 112 281 2023-03-07T02:35:06Z BlindCartographer 2 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Module:Userbox 828 104 282 268 2023-03-07T02:43:40Z BlindCartographer 2 Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'right' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-c'] or args[2] or '#eeeeee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args['info-fc'] or args[8] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNum(args['id1-s'], 14) data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNum(args['id2-s'], 14) data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :attr('role', 'presentation') :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('td') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('td') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 cats[#cats + 1] = args.usercategory4 cats[#cats + 1] = args.usercategory5 -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with templates in the wrong namespace]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) end return p 578ccaa56382d4652effaa4dd90cdd9ec69a9a31 283 282 2023-03-07T02:47:31Z BlindCartographer 2 Scribunto text/plain -- This module implements {{userbox}}. local categoryHandler = require('Module:Category handler').main local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function checkNum(val, default) -- Checks whether a value is a number greater than or equal to zero. If so, -- returns it as a number. If not, returns a default value. val = tonumber(val) if val and val >= 0 then return val else return default end end local function addSuffix(num, suffix) -- Turns a number into a string and adds a suffix. if num then return tostring(num) .. suffix else return nil end end local function checkNumAndAddSuffix(num, default, suffix) -- Checks a value with checkNum and adds a suffix. num = checkNum(num, default) return addSuffix(num, suffix) end local function makeCat(cat, sort) -- Makes a category link. if sort then return mw.ustring.format('[[Category:%s|%s]]', cat, sort) else return mw.ustring.format('[[Category:%s]]', cat) end end -------------------------------------------------------------------------------- -- Argument processing -------------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local origArgs = require('Module:Arguments').getArgs(frame) local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.main(funcName, args) end end p.userbox = makeInvokeFunc('_userbox') p['userbox-2'] = makeInvokeFunc('_userbox-2') p['userbox-r'] = makeInvokeFunc('_userbox-r') -------------------------------------------------------------------------------- -- Main functions -------------------------------------------------------------------------------- function p.main(funcName, args) local userboxData = p[funcName](args) local userbox = p.render(userboxData) local cats = p.categories(args) return userbox .. (cats or '') end function p._userbox(args) -- Does argument processing for {{userbox}}. local data = {} -- Get div tag values. data.float = args.float or 'right' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] data.infoClass = args['info-class'] -- Get id values. local id = args.logo or args[3] or args.id data.id = id data.showId = id and true or false data.idWidth = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.idBackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.idTextAlign = args['id-a'] or 'center' data.idFontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.idColor = args['logo-color'] or args['id-fc'] or data.infoColor data.idPadding = args['logo-padding'] or args['id-p'] or '0 1px 0 0' data.idLineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.idOtherParams = args['logo-other-param'] or args['id-op'] data.idClass = args['id-class'] return data end p['_userbox-2'] = function (args) -- Does argument processing for {{userbox-2}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-s'] or args[9], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-c'] or args[6] or args['id1-c'] or args[1] or '#999999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-c'] or args[2] or '#eeeeee' -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-s'], 8, 'pt') data.infoColor = args['info-fc'] or args[8] or 'black' data.infoPadding = args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-lh'] or '1.25em' data.infoOtherParams = args['info-op'] -- Get id values. data.showId = true data.id = args.logo or args[3] or args.id1 or 'id1' data.idWidth = checkNumAndAddSuffix(args['id1-w'], 45, 'px') data.idHeight = checkNumAndAddSuffix(args['id-h'], 45, 'px') data.idBackgroundColor = args['id1-c'] or args[1] or '#dddddd' data.idTextAlign = 'center' data.idFontSize = checkNum(args['id1-s'], 14) data.idLineHeight = args['id1-lh'] or '1.25em' data.idColor = args['id1-fc'] or data.infoColor data.idPadding = args['id1-p'] or '0 1px 0 0' data.idOtherParams = args['id1-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[5] or args.id2 or 'id2' data.id2Width = checkNumAndAddSuffix(args['id2-w'], 45, 'px') data.id2Height = data.idHeight data.id2BackgroundColor = args['id2-c'] or args[7] or args[1] or '#dddddd' data.id2TextAlign = 'center' data.id2FontSize = checkNum(args['id2-s'], 14) data.id2LineHeight = args['id2-lh'] or '1.25em' data.id2Color = args['id2-fc'] or data.infoColor data.id2Padding = args['id2-p'] or '0 0 0 1px' data.id2OtherParams = args['id2-op'] return data end p['_userbox-r'] = function (args) -- Does argument processing for {{userbox-r}}. local data = {} -- Get div tag values. data.float = args.float or 'left' local borderWidthNum = checkNum(args['border-width'] or args['border-s'], 1) -- Used to calculate width. data.borderWidth = addSuffix(borderWidthNum, 'px') data.borderColor = args['border-color'] or args['border-c'] or args[1] or args['id-c'] or '#999' data.width = addSuffix(240 - 2 * borderWidthNum, 'px') -- Also used in the table tag. data.bodyClass = args.bodyclass -- Get table tag values. data.backgroundColor = args['info-background'] or args[2] or args['info-c'] or '#eee' -- Get id values. data.showId = false -- We only show id2 in userbox-r. -- Get info values. data.info = args.info or args[4] or "<code>{{{info}}}</code>" data.infoTextAlign = args['info-align'] or args['info-a'] or 'left' data.infoFontSize = checkNumAndAddSuffix(args['info-size'] or args['info-s'], 8, 'pt') data.infoPadding = args['info-padding'] or args['info-p'] or '0 4px 0 4px' data.infoLineHeight = args['info-line-height'] or args['info-lh'] or '1.25em' data.infoColor = args['info-color'] or args['info-fc'] or 'black' data.infoOtherParams = args['info-other-param'] or args['info-op'] -- Get id2 values. data.showId2 = true data.id2 = args.logo or args[3] or args.id or 'id' data.id2Width = checkNumAndAddSuffix(args['logo-width'] or args['id-w'], 45, 'px') data.id2Height = checkNumAndAddSuffix(args['logo-height'] or args['id-h'], 45, 'px') data.id2BackgroundColor = args['logo-background'] or args[1] or args['id-c'] or '#ddd' data.id2TextAlign = args['id-a'] or 'center' data.id2FontSize = checkNum(args['logo-size'] or args[5] or args['id-s'], 14) data.id2Color = args['logo-color'] or args['id-fc'] or data.infoColor data.id2Padding = args['logo-padding'] or args['id-p'] or '0 0 0 1px' data.id2LineHeight = args['logo-line-height'] or args['id-lh'] or '1.25em' data.id2OtherParams = args['logo-other-param'] or args['id-op'] return data end function p.render(data) -- Renders the userbox html using the content of the data table. -- Render the div tag html. local root = mw.html.create('div') root :css('float', data.float) :css('border', (data.borderWidth or '') .. ' solid ' .. (data.borderColor or '')) :css('margin', '1px') :css('width', data.width) :addClass('wikipediauserbox') :addClass(data.bodyClass) -- Render the table tag html. local tableroot = root:tag('table') tableroot :attr('role', 'presentation') :css('border-collapse', 'collapse') :css('width', data.width) :css('margin-bottom', '0') :css('margin-top', '0') :css('background', data.backgroundColor) -- Render the id html. local tablerow = tableroot:tag('tr') if data.showId then tablerow:tag('td') :css('border', '0') :css('width', data.idWidth) :css('height', data.idHeight) :css('background', data.idBackgroundColor) :css('text-align', data.idTextAlign) :css('font-size', data.idFontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.idColor) :css('padding', data.idPadding) :css('line-height', data.idLineHeight) :css('vertical-align', 'middle') :cssText(data.idOtherParams) :addClass(data.idClass) :wikitext(data.id) end -- Render the info html. tablerow:tag('td') :css('border', '0') :css('text-align', data.infoTextAlign) :css('font-size', data.infoFontSize) :css('padding', data.infoPadding) :css('height', data.infoHeight) :css('line-height', data.infoLineHeight) :css('color', data.infoColor) :css('vertical-align', 'middle') :cssText(data.infoOtherParams) :addClass(data.infoClass) :wikitext(data.info) -- Render the second id html. if data.showId2 then tablerow:tag('td') :css('border', '0') :css('width', data.id2Width) :css('height', data.id2Height) :css('background', data.id2BackgroundColor) :css('text-align', data.id2TextAlign) :css('font-size', data.id2FontSize .. 'pt') :css('font-weight', 'bold') :css('color', data.id2Color) :css('padding', data.id2Padding) :css('line-height', data.id2LineHeight) :css('vertical-align', 'middle') :cssText(data.id2OtherParams) :wikitext(data.id2) end local title = mw.title.getCurrentTitle() if (title.namespace == 2) and not title.text:match("/") then return tostring(root) -- regular user page elseif title.namespace == 14 then return tostring(root) -- category elseif title.isTalkPage then return tostring(root) -- talk page end return tostring(root) end function p.categories(args, page) -- Gets categories from [[Module:Category handler]]. -- The page parameter makes the function act as though the module was being called from that page. -- It is included for testing purposes. local cats = {} cats[#cats + 1] = args.usercategory cats[#cats + 1] = args.usercategory2 cats[#cats + 1] = args.usercategory3 cats[#cats + 1] = args.usercategory4 cats[#cats + 1] = args.usercategory5 -- Get the title object local title if page then title = mw.title.new(page) else title = mw.title.getCurrentTitle() end -- Build category handler arguments. local chargs = {} chargs.page = page chargs.nocat = args.nocat chargs.main = '[[Category:Pages with templates in the wrong namespace]]' if args.notcatsubpages then chargs.subpage = 'no' end -- User namespace. local user = '' for i, cat in ipairs(cats) do user = user .. makeCat(cat) end chargs.user = user -- Template namespace. local basepage = title.baseText local template = '' for i, cat in ipairs(cats) do template = template .. makeCat(cat, ' ' .. basepage) end chargs.template = template return categoryHandler(chargs) end return p 03a5c2db19ed9fa531a96ba68339b60a3c012306 Template:Userbox administrator 10 113 284 2023-03-07T02:47:58Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-admin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Administrators|administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullur..." wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-admin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Administrators|administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> 699782fdb64a038d7664ff6eb4a79f37de09b90b 285 284 2023-03-07T02:48:13Z BlindCartographer 2 Protected "[[Template:Userbox administrator]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-admin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Administrators|administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> 699782fdb64a038d7664ff6eb4a79f37de09b90b 287 285 2023-03-07T02:53:46Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-admin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Administrators|administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> 98e8de19d1457844ece9e5f4fba6b6dfaffcf900 305 287 2023-03-07T03:10:54Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-admin-logo.png|43px|link=Project:Administrators]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Administrators|administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Adminstrators]]</includeonly> ac36de44ba2fbe3e3beef9f126d4d668abc9b352 Template:Userbox wiki manager 10 114 286 2023-03-07T02:52:30Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-manager-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is the '''[[Project:Staff#Executive Wiki Manager|wiki manager]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} of the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainl..." wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-manager-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is the '''[[Project:Staff#Executive Wiki Manager|wiki manager]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} of the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Project:Staff#Executive Wiki Manager|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> ed179d69b8c0103206a2bc695edcc5e52be494ab 289 286 2023-03-07T02:55:30Z BlindCartographer 2 Protected "[[Template:Userbox wiki manager]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-manager-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is the '''[[Project:Staff#Executive Wiki Manager|wiki manager]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} of the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Project:Staff#Executive Wiki Manager|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> ed179d69b8c0103206a2bc695edcc5e52be494ab 302 289 2023-03-07T03:08:47Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-manager-logo.png|43px|link=Project:Staff#Execute Wiki Manager]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is the '''[[Project:Staff#Executive Wiki Manager|wiki manager]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} of the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Project:Staff#Executive Wiki Manager|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> 73c5f45e52dd10893175f9338c0c0199dc896d4f 307 302 2023-03-07T14:03:13Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-manager-logo.png|43px|link=Project:Staff#Executive Wiki Manager]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is the '''[[Project:Staff#Executive Wiki Manager|wiki manager]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} of the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Project:Staff#Executive Wiki Manager|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> f5403a638fd426a0602f6cc36f11225fb19a71c1 Template:Userbox bureaucrat 10 115 288 2023-03-07T02:55:09Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-bureaucrat-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Bureaucrat|bureaucrat]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fu..." wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-bureaucrat-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Bureaucrat|bureaucrat]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> dd4fdd64312c6aadbc99c8180f8144530546ba01 290 288 2023-03-07T02:56:07Z BlindCartographer 2 Protected "[[Template:Userbox bureaucrat]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-bureaucrat-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Bureaucrat|bureaucrat]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> dd4fdd64312c6aadbc99c8180f8144530546ba01 303 290 2023-03-07T03:09:24Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-bureaucrat-logo.png|43px|link=Project:Staff#Bureaucrats]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Bureaucrat|bureaucrat]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Bureaucrats]]</includeonly> 3d8ec110a2bc5bd789990f7cac27232823d54aa4 304 303 2023-03-07T03:10:08Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-bureaucrat-logo.png|43px|link=Project:Staff#Bureaucrats]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is a '''[[Project:Staff#Bureaucrat|bureaucrat]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Bureaucrats]]</includeonly> e4c09a358e26ac302633bc728c13a63af7a0ee67 Template:Userbox moderator 10 116 291 2023-03-07T02:58:08Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-moderator-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Moderator|moderator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullu..." wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-moderator-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Moderator|moderator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Catgeory:Moderators]]</includeonly> f86f3bbbdd59eb3c4e3d086bd97b9052890f171e 292 291 2023-03-07T02:58:24Z BlindCartographer 2 Protected "[[Template:Userbox moderator]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-moderator-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Moderator|moderator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Catgeory:Moderators]]</includeonly> f86f3bbbdd59eb3c4e3d086bd97b9052890f171e 300 292 2023-03-07T03:07:03Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-moderator-logo.png|43px|link=Project:Staff#Moderator]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is a '''[[Project:Staff#Moderator|moderator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Catgeory:Moderators]]</includeonly> 708fbe2c78ad4b09d258fc7f33881e5d1c76af27 301 300 2023-03-07T03:07:14Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-moderator-logo.png|43px|link=Project:Staff#Moderator]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is a '''[[Project:Staff#Moderator|moderator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Moderators]]</includeonly> aa0699d1bd8ee5850dd0aed5ae2b6d85282c9982 Template:Userbox interface administrator 10 117 293 2023-03-07T03:01:10Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-interfaceadmin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Interface Administrator|interface administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9..." wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-interfaceadmin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Interface Administrator|interface administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> e5b3babbdc040bba0820ecfe4a41b2a364ee6095 294 293 2023-03-07T03:01:20Z BlindCartographer 2 Protected "[[Template:Userbox interface administrator]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-interfaceadmin-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Interface Administrator|interface administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> e5b3babbdc040bba0820ecfe4a41b2a364ee6095 299 294 2023-03-07T03:06:16Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-interfaceadmin-logo.png|43px|link=Project:Staff#Interface Administrator]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Interface Administrator|interface administrator]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Interface administrators]]</includeonly> a72a3e4c2d96d7efcc71330683f86b82eea454d7 Template:Userbox rollbacker 10 118 295 2023-03-07T03:02:12Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-rollbacker-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Rollbacker|rollbacker]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fu..." wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-rollbacker-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Rollbacker|rollbacker]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> ab6896dcbd15bd7dccd1d6aa2b331d26c6d6a3b1 296 295 2023-03-07T03:02:27Z BlindCartographer 2 Protected "[[Template:Userbox rollbacker]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-rollbacker-logo.png|43px]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Rollbacker|rollbacker]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> ab6896dcbd15bd7dccd1d6aa2b331d26c6d6a3b1 297 296 2023-03-07T03:03:55Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-rollbacker-logo.png|43px|link=Project:Staff#Rollbacker]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is an '''[[Project:Staff#Rollbacker|rollbacker]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Rollbackers]]</includeonly> 95e568b5a596eb16231cfc5986770d618439e2fa 298 297 2023-03-07T03:05:19Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Gamedev-rollbacker-logo.png|43px|link=Project:Staff#Rollbacker]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info = {{#if:{{{RFA|}}}|[[{{{RFA}}}|This user]]|This user}} {{#if:{{{noannounce|}}}|don't need no stinkin' badges.|is a '''[[Project:Staff#Rollbacker|rollbacker]]'''{{#if:{{{othertext|}}}|&nbsp;{{{othertext}}}|}} on the {{{1|[[Main Page|Game Development Wiki]]}}}. {{#if:{{{1|}}}|<span style="font-size:0.9em;" class="plainlinks">([{{fullurl:{{{lang_code|en}}}:Special:UserRights|user={{urlencode:{{{username|{{BASEPAGENAME}}}}}}}&uselang=en}} <span style="color:#5871C6;">verify{{#if:{{{lang_code|}}}|&nbsp;{{{lang_code}}}|}}</span>])</span>|<span style="font-size:0.9em;" class="plainlinks">([[Special:UserRights/{{{username|{{BASEPAGENAME}}}}}|<span style="color:#5871C6;">verify</span>]])</span>}} }} }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Rollbackers]]</includeonly> ee12fd0f8e9fce5d6af724777ae78993b20f5bc4 User:BlindCartographer 2 5 306 186 2023-03-07T03:13:17Z BlindCartographer 2 wikitext text/x-wiki Heyo, I'm BlindCartographer, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. {{Userbox wiki manager}}<br /> <br> {{Userbox bureaucrat}}<br /> <br> {{Userbox administrator}}<br /> <br> 249ed62442face6b1a0fa3813df84bb83b0637d6 319 306 2023-03-07T18:14:02Z BlindCartographer 2 wikitext text/x-wiki Heyo, I'm BlindCartographer, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. Feel free to contact me if you need help with anything! {{Userbox group |title=My userboxes |collapse=0 |userboxes= {{Userbox wiki manager}} {{Userbox bureaucrat}} {{Userbox administrator}} }} == About Me == b4336fef8f374dcaecc85bb1b79aea33c28e5a5c 322 319 2023-03-07T18:19:23Z BlindCartographer 2 wikitext text/x-wiki {{Userbox group |title=My userboxes |collapse=0 |userboxes= {{Userbox wiki manager}} {{Userbox bureaucrat}} {{Userbox administrator}} }} Heyo, I'm BlindCartographer, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. Feel free to contact me if you need help with anything! == About Me == 5e17e61f5afb205d82dc20fa871f07e0ef344686 Template:Userbox group 10 119 308 2023-03-07T17:50:13Z BlindCartographer 2 Created page with "<div style="display: flex; justify-content: center;"> <onlyinclude><templatestyles src="Template:Userbox group/styles.css" /><!-- --><table class="userbox-group mw-collapsible <includeonly>{{#if:{{Yesno|{{{collapse|1}}}}}|mw-collapsed}}</includeonly>" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}" {{#if:{{{style|}}}|style="{{{style|}}}"}}><!-- --><tr class="display-table-row"><!-- --><th class="ubx-group-header"><div class="header-text-container">{{#if:{..." wikitext text/x-wiki <div style="display: flex; justify-content: center;"> <onlyinclude><templatestyles src="Template:Userbox group/styles.css" /><!-- --><table class="userbox-group mw-collapsible <includeonly>{{#if:{{Yesno|{{{collapse|1}}}}}|mw-collapsed}}</includeonly>" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}" {{#if:{{{style|}}}|style="{{{style|}}}"}}><!-- --><tr class="display-table-row"><!-- --><th class="ubx-group-header"><div class="header-text-container">{{#if:{{{title|}}}|{{{title}}}|Other userboxes}}</div></th><!-- --></tr><!-- --><tr><!-- --><td class="ubx-group-body"><div class="flex-container"> {{{1|{{{userboxes}}}}}}<nowiki> </nowiki></div></td><!-- --></tr><!-- -->{{#if:{{{footer|<noinclude>1</noinclude>}}}|<!-- --><tr><!-- --><td class="ubx-group-footer">{{{footer}}}</td><!-- --></tr><!-- -->}}<!-- --></table></onlyinclude> </div> {{Documentation}} [[Category:Templates]] 6b762ed86f96c6cfaaa4b97b57715175ac72ace1 314 308 2023-03-07T18:02:03Z BlindCartographer 2 Protected "[[Template:Userbox group]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div style="display: flex; justify-content: center;"> <onlyinclude><templatestyles src="Template:Userbox group/styles.css" /><!-- --><table class="userbox-group mw-collapsible <includeonly>{{#if:{{Yesno|{{{collapse|1}}}}}|mw-collapsed}}</includeonly>" data-expandtext="{{int:show}}" data-collapsetext="{{int:hide}}" {{#if:{{{style|}}}|style="{{{style|}}}"}}><!-- --><tr class="display-table-row"><!-- --><th class="ubx-group-header"><div class="header-text-container">{{#if:{{{title|}}}|{{{title}}}|Other userboxes}}</div></th><!-- --></tr><!-- --><tr><!-- --><td class="ubx-group-body"><div class="flex-container"> {{{1|{{{userboxes}}}}}}<nowiki> </nowiki></div></td><!-- --></tr><!-- -->{{#if:{{{footer|<noinclude>1</noinclude>}}}|<!-- --><tr><!-- --><td class="ubx-group-footer">{{{footer}}}</td><!-- --></tr><!-- -->}}<!-- --></table></onlyinclude> </div> {{Documentation}} [[Category:Templates]] 6b762ed86f96c6cfaaa4b97b57715175ac72ace1 Template:Userbox group/styles.css 10 121 311 2023-03-07T17:54:40Z BlindCartographer 2 Created page with ".userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; max-width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 aut..." wikitext text/x-wiki .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; max-width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ max-width: -webkit-max-content; /* Chrome < 46; Safari < 11 */ max-width: -moz-max-content; /* Firefox < 66 */ max-width: max-content; text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } fd40db802bfdc85549fa65ad808468e3d6f18be1 312 311 2023-03-07T18:01:25Z BlindCartographer 2 wikitext text/x-wiki .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } a6ae057287cd75fbf7b6fc4c635ef868ef076600 313 312 2023-03-07T18:01:32Z BlindCartographer 2 BlindCartographer changed the content model of the page [[Template:Userbox group/styles.css]] from "wikitext" to "Sanitized CSS" sanitized-css text/css .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } a6ae057287cd75fbf7b6fc4c635ef868ef076600 315 313 2023-03-07T18:05:52Z BlindCartographer 2 sanitized-css text/css .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; max-width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ max-width: max-content; text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } 51fb7cb3aecfeb08bf4f4287343b458075afa682 318 315 2023-03-07T18:13:46Z BlindCartographer 2 sanitized-css text/css .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: right; width: 246px; max-width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ max-width: max-content; text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } 9049861f751cc1e2f1278f38689fe813641a67f6 320 318 2023-03-07T18:18:14Z BlindCartographer 2 Undo revision 318 by [[Special:Contributions/BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]]) sanitized-css text/css .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; max-width: 246px; margin: 1px -3px; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ max-width: max-content; text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } 51fb7cb3aecfeb08bf4f4287343b458075afa682 321 320 2023-03-07T18:18:37Z BlindCartographer 2 sanitized-css text/css .userbox-group { /* .mw-babel-wrapper */ background-color: #FFF; border: 1px solid #99B3FF; border-spacing: 0; box-sizing: border-box; padding: 0; /* .userbox-group */ text-align: left; width: 246px; max-width: 246px; margin: 1px -3px; float: right; } .userbox-group .display-table-row { display: table-row !important; } .userbox-group .ubx-group-header { /* .mw-babel-header */ font-weight: bold; } .userbox-group .ubx-group-header > .header-text-container { margin: 0 auto; /* https://caniuse.com/mdn-css_properties_width_max-content */ max-width: max-content; text-align: center; } .userbox-group .ubx-group-body { padding: 1px; } .userbox-group .ubx-group-body > .flex-container { align-items: center; display: flex; flex-direction: column; } .userbox-group .ubx-group-footer { /* .mw-babel-footer */ font-size: 85%; font-weight: normal; text-align: center; } c49c96c8b6e1257c47bd253962c9ae92f5feb357 Template:Yesno 10 122 316 2023-03-07T18:06:41Z BlindCartographer 2 Created page with "{{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |false |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |true |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude>" wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |false |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |true |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 166fab9e5411aacd02ca4c9e93fbc7bf6bcf26ac 317 316 2023-03-07T18:07:00Z BlindCartographer 2 Protected "[[Template:Yesno]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |false |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |true |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> 166fab9e5411aacd02ca4c9e93fbc7bf6bcf26ac Template:Mbox/styles.css 10 79 323 197 2023-03-07T18:23:29Z BlindCartographer 2 sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } table.ambox-wikinotice { /* @noflip */ border-left: 10px solid #008000; /* Green */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } a9f0e74f4beba8a91747ad07b48b4766091b007b Module:Message box/ambox.css 828 82 324 202 2023-03-07T18:25:35Z BlindCartographer 2 sanitized-css text/css /** * {{ambox}} (article message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ambox { /* 10% = Will not overlap with other elements */ margin: 0 10%; border: 1px solid #a2a9b1; /* Default "notice" blue */ border-left: 10px solid #36c; background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. */ table.ambox + table.ambox, table.ambox + link + table.ambox, table.ambox + style + table.ambox { margin-top: -1px; } /* An empty narrow cell */ .ambox td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ .ambox th.mbox-text, .ambox td.mbox-text { border: none; /* 0.5em left/right */ padding: 0.25em 0.5em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ .ambox td.mbox-image { /* 0.5em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.5em; } /* The right image cell */ .ambox td.mbox-imageright { /* 0px left, 0.5em right */ /* @noflip */ padding: 2px 0.5em 2px 0; } table.ambox-notice { /* Blue */ border-left-color: #36c; } table.ambox-speedy { /* Pink */ background-color: #fee7e6; } table.ambox-delete, table.ambox-speedy { /* Red */ border-left-color: #b32424; } table.ambox-content { /* Orange */ border-left-color: #f28500; } table.ambox-style { /* Yellow */ border-left-color: #fc3; } table.ambox-move { /* Purple */ border-left-color: #9932cc; } table.ambox-protection { /* Gray-gold */ border-left-color: #a2a9b1; } table.ambox-wikinotice { /* Gray-gold */ border-left-color: #008000; } /** * {{ambox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".ambox" classes. "html body.mediawiki .ambox" * is so they override both "table.ambox + table.ambox" * and "table.ambox + link + table.ambox" above. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .ambox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } /* For the "small=left" option. */ html body.mediawiki .ambox.mbox-small-left { margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } f3a0141114faec8e3979eafc474ced4dbe10d0c4 Module:Message box/configuration 828 19 325 198 2023-03-07T18:27:12Z BlindCartographer 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' }, wikinotice = { class = 'ambox-wikinotice', image = 'Site-Icon.png' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 8193a825c7d9b03174ce3095820a8a272995ea7e Template:Policy page 10 43 326 206 2023-03-07T18:28:38Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = {{{demospace|}}} main | type = wikinotice | image = [[File:Site-Icon.png|50px|link=Main Page]] | text = <center>'''This page documents a [[GDW:P|Game Development Wiki policy]]'''.</center> It documents a site-wide policy or policies that must be followed and are widely accepted among contributors. All wiki users should follow it, and changes made to it should be discussed on the [[{{TALKPAGENAME}}|talk page]]. | small = {{{small|left}}} / left / no | plainlinks = no }} <br />{{#ifeq:{{{demo}}}|yes||<includeonly>{{#ifeq:{{NAMESPACE}}|{{ns:0}}|{{{category|[[Category:{{SITENAME}}|{{{Sortkey|{{PAGENAME}}}}}]]}}}}}</includeonly>}}<noinclude>{{Documentation}}[[Category:Header templates]]</noinclude> 4c5c3175c08c8f14d3cb5c6d1fc2726bd9771653 Game Development Wiki:Copyrights 4 123 327 2023-03-07T18:30:17Z BlindCartographer 2 Created page with "{{Policy page}} Content on the Game Development Wiki is licensed under the Creative Commons Attribution-ShareAlike 4.0 License unless otherwise noted. Files must abide by British copyright law. Fair use as such does not exist in the British system, it is instead replaced by a similar but stricter fair dealing system." wikitext text/x-wiki {{Policy page}} Content on the Game Development Wiki is licensed under the Creative Commons Attribution-ShareAlike 4.0 License unless otherwise noted. Files must abide by British copyright law. Fair use as such does not exist in the British system, it is instead replaced by a similar but stricter fair dealing system. d0266efebbf04b3777803dc1b2d1bec9e6188aeb 328 327 2023-03-07T18:30:32Z BlindCartographer 2 Protected "[[Game Development Wiki:Copyrights]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} Content on the Game Development Wiki is licensed under the Creative Commons Attribution-ShareAlike 4.0 License unless otherwise noted. Files must abide by British copyright law. Fair use as such does not exist in the British system, it is instead replaced by a similar but stricter fair dealing system. d0266efebbf04b3777803dc1b2d1bec9e6188aeb 333 328 2023-03-07T18:37:35Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} Content on the [[Main Page|Game Development Wiki]] is licensed under the Creative Commons Attribution-ShareAlike 4.0 License unless otherwise noted. Files must abide by British copyright law. Fair use as such does not exist in the British system, it is instead replaced by a similar but stricter fair dealing system. a75ccf2d4a2c286a459762a5c2f4fe61ffcca589 Game Development Wiki:General disclaimer 4 124 329 2023-03-07T18:34:50Z BlindCartographer 2 Created page with "By using and accessing the [[Main Page|Game Development Wiki]], you agree to the wiki [[GDW:P|policies]] and [[GDW:EM|editing manual]]. You also agree to the Miraheze [[meta:Terms of Use|Terms of Use]] and [[meta:Privacy Policy|Privacy Policy]]." wikitext text/x-wiki By using and accessing the [[Main Page|Game Development Wiki]], you agree to the wiki [[GDW:P|policies]] and [[GDW:EM|editing manual]]. You also agree to the Miraheze [[meta:Terms of Use|Terms of Use]] and [[meta:Privacy Policy|Privacy Policy]]. 0e1b50edac895b3ff2dd0c5834b9b018b4c7fcc2 330 329 2023-03-07T18:35:01Z BlindCartographer 2 Protected "[[Game Development Wiki:General disclaimer]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki By using and accessing the [[Main Page|Game Development Wiki]], you agree to the wiki [[GDW:P|policies]] and [[GDW:EM|editing manual]]. You also agree to the Miraheze [[meta:Terms of Use|Terms of Use]] and [[meta:Privacy Policy|Privacy Policy]]. 0e1b50edac895b3ff2dd0c5834b9b018b4c7fcc2 Category:Bureaucrats 14 125 331 2023-03-07T18:36:29Z BlindCartographer 2 Created page with "The current [[Project:Staff#Bureaucrat|bureaucrats]] of the [[Main Page|Game Development Wiki]]." wikitext text/x-wiki The current [[Project:Staff#Bureaucrat|bureaucrats]] of the [[Main Page|Game Development Wiki]]. ef9bf1c1dabcbe5a77fe88bf389be956314d56e3 Category:Adminstrators 14 126 332 2023-03-07T18:37:03Z BlindCartographer 2 Created page with "The current [[Project:Administrators|administrators]] of the [[Main Page|Game Development Wiki]]." wikitext text/x-wiki The current [[Project:Administrators|administrators]] of the [[Main Page|Game Development Wiki]]. 6de327c94d0e8ff1ed4b36d8c62a97763305f984 Template:Unblock 10 127 334 2023-03-07T18:43:25Z BlindCartographer 2 Created page with "<div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}..." wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:UserProfileActivity/{{BASEPAGENAME}}|activity]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> ---- '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;">[[File:Appointment green.svg|left|48px|link=]] '''Your block appeal request has been accepted''': ---- '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;">[[File:Appointment red.svg|left|48px|link=]] '''Your block appeal request has been denied''': ---- '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> 01833652fe38dc6711f9d3ef22ec21eefecf5283 336 334 2023-03-07T18:47:57Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> ---- '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;"><span style="float: left;">[[File:Appointment green.svg|left|48px|link=]]</span> '''Your block appeal request has been accepted''': ---- '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;"><span style="float: left;">[[File:Appointment red.svg|left|48px|link=]]</span> '''Your block appeal request has been denied''': ---- '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> 2bb0e236172c81d19b45c5bcabdecea3a3cfa6b9 337 336 2023-03-07T18:50:47Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> ---- '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;"><span style="float: left; margin: auto;">[[File:Appointment green.svg|left|48px|link=]]</span> '''Your block appeal request has been accepted''': ---- '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;"><span style="float: left; margin: auto;">[[File:Appointment red.svg|left|48px|link=]]</span> '''Your block appeal request has been denied''': ---- '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> 1d474eba516b3ba3d2ecf6e7f7194acc743fb7a2 338 337 2023-03-07T18:56:53Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> <hr> '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;"><span style="float: left; margin: auto;">[[File:Appointment green.svg|left|48px|link=]]</span> '''Your block appeal request has been accepted''': <hr> '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;"><span style="float: left; margin: auto;">[[File:Appointment red.svg|left|48px|link=]]</span> '''Your block appeal request has been denied''': <hr> '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> 174ed5f160bc7f0819ec242c546bae932d8c7083 339 338 2023-03-07T18:58:40Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> <hr /> '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;"><span style="float: left; margin: auto;">[[File:Appointment green.svg|left|48px|link=]]</span> '''Your block appeal request has been accepted''': <hr /> '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;"><span style="float: left; margin: auto;">[[File:Appointment red.svg|left|48px|link=]]</span> '''Your block appeal request has been denied''': <hr /> '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> ffa4e0c6a30de7bd799b41c2f32414249aadaf20 347 339 2023-03-07T19:09:41Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> <hr /> '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;">[[File:Appointment green.svg|left|48px|link=]] '''Your block appeal request has been accepted''': <hr /> '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;">[[File:Appointment red.svg|left|48px|link=]] '''Your block appeal request has been denied''': <hr /> '''Administrator note''': {{{an|}}}</div> | hold = | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #FFFAF0; background-color: #fae4e3;">[[File:Appointment yellow.svg|left|48px|link=]] '''Your block appeal request has been placed on hold''': <hr /> '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> cce5c270b3f68ff27e66e9be55fdd50da0b83faf 348 347 2023-03-07T19:12:12Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> <hr /> '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;">[[File:Appointment green.svg|left|48px|link=]] '''Your block appeal request has been accepted''': <hr /> '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;">[[File:Appointment red.svg|left|48px|link=]] '''Your block appeal request has been denied''': <hr /> '''Administrator note''': {{{an|}}}</div> | hold = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #FFFAF0; background-color: #fae4e3;">[[File:Appointment yellow.svg|left|48px|link=]] '''Your block appeal request has been placed on hold''': <hr /> '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> a69b0ba6f9ce4147b1d563956762426e35d081c2 350 348 2023-03-07T19:13:35Z BlindCartographer 2 wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> <hr /> '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;">[[File:Appointment green.svg|left|48px|link=]] '''Your block appeal request has been accepted''': <hr /> '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;">[[File:Appointment red.svg|left|48px|link=]] '''Your block appeal request has been denied''': <hr /> '''Administrator note''': {{{an|}}}</div> | hold = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #FFFAF0;">[[File:Appointment yellow.svg|left|48px|link=]] '''Your block appeal request has been placed on hold''': <hr /> '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> dd90594f13a513d8b394b9f0a91050ab7dc460ef 352 350 2023-03-07T19:14:51Z BlindCartographer 2 Protected "[[Template:Unblock]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #EBF4FF; color:black;"> [[File:Appointment blue.svg|left|48px|link=]] '''This user has requested that <span class="plainlinks">[{{fullurl:Special:BlockList|action=search&ip={{BASEPAGENAMEE}}}} their block]</span> be reviewed''': [[User:{{BASEPAGENAME}}|{{BASEPAGENAME}}]] <span class="plainlinks" style="font-size:88%;">([{{fullurl:Special:Log|type=block&page=User:{{BASEPAGENAMEE}}}} block log] • [[Special:Contributions/{{BASEPAGENAME}}|contribs]] • [[Special:AbuseLog/{{BASEPAGENAME}}|abuse log]] • [{{fullurl:Special:Log|type=newusers&user={{BASEPAGENAMEE}}}} creation log])</span> <hr /> '''Request reason''': {{{1|}}} <br> <br> '''Notes''': *Please make sure you have not appealed for a block of the same reason before, because your appeal will be declined if so. *You should look over the [[GDW:P|rules]] and [[Project:Policy/Blocking policy|block policy]] before appealing. </div> {{#switch: {{{ans|}}} | yes = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ecffeb;">[[File:Appointment green.svg|left|48px|link=]] '''Your block appeal request has been accepted''': <hr /> '''Administrator note''': {{{an|}}}</div> | no = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #fae4e3;">[[File:Appointment red.svg|left|48px|link=]] '''Your block appeal request has been denied''': <hr /> '''Administrator note''': {{{an|}}}</div> | hold = <div style="padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #FFFAF0;">[[File:Appointment yellow.svg|left|48px|link=]] '''Your block appeal request has been placed on hold''': <hr /> '''Administrator note''': {{{an|}}}</div> }} <noinclude>{{Documentation}}</noinclude> dd90594f13a513d8b394b9f0a91050ab7dc460ef Template:Unblock/doc 10 128 335 2023-03-07T18:44:27Z BlindCartographer 2 Created page with "This template can be added by a blocked user (that is still able to edit their talk page) and ask for their block to be appealed. It can be done by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reasoning as to why you should be unblocked. Only the blocked user can appeal their block. An '''administrator''' can then respond by adding the <code>|ans=yes/no</code> and choosing yes or no based on whet..." wikitext text/x-wiki This template can be added by a blocked user (that is still able to edit their talk page) and ask for their block to be appealed. It can be done by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reasoning as to why you should be unblocked. Only the blocked user can appeal their block. An '''administrator''' can then respond by adding the <code>|ans=yes/no</code> and choosing yes or no based on whether or not the appeal was accepted or declined. == Syntax == When a user puts <code><nowiki>{{Unblock|insert reason here ~~~~}}</nowiki></code>, it will output as: {{Unblock|insert reason here (users signature)}} === Answers === ==== Yes ==== If an admin wants to respond, they can add two extra parameters. If an administrator adds the <code>|ans=yes</code> param, along with a fourth param filled in with their response, it will output as the following (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=yes|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=yes|an=admins note (admins signature)}} ==== No ==== In a similar way, appeals can be declined by making the <code>|ans=</code> param say "no" instead of "yes". Putting once added, it will output as this (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=no|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=no|an=admins note (admins signature)}} 53634ab5038dc96f2af3a18c906d113f10019708 349 335 2023-03-07T19:12:28Z BlindCartographer 2 wikitext text/x-wiki This template can be added by a blocked user (that is still able to edit their talk page) and ask for their block to be appealed. It can be done by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reasoning as to why you should be unblocked. Only the blocked user can appeal their block. An '''administrator''' can then respond by adding the <code>|ans=yes/no</code> and choosing yes or no based on whether or not the appeal was accepted or declined. == Syntax == When a user puts <code><nowiki>{{Unblock|insert reason here ~~~~}}</nowiki></code>, it will output as: {{Unblock|insert reason here (users signature)}} === Answers === ==== Yes ==== If an admin wants to respond, they can add two extra parameters. If an administrator adds the <code>|ans=yes</code> param, along with a fourth param filled in with their response, it will output as the following (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=yes|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=yes|an=admins note (admins signature)}} ==== No ==== In a similar way, appeals can be declined by making the <code>|ans=</code> param say "no" instead of "yes". Once once added, it will output as this (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=no|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=no|an=admins note (admins signature)}} ==== On hold ==== If an admins wants to place a block appeal on hold for whatever reason, they may do so by making the <code>|ans=</code> param say "hold". Once added, it will output as this (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=hold|an=(admins note) ~~~~}}</nowiki></code>) ae8c3a436aaf9f5e40df5b08c61d6bfcee072410 351 349 2023-03-07T19:14:24Z BlindCartographer 2 wikitext text/x-wiki This template can be added by a blocked user (that is still able to edit their talk page) and ask for their block to be appealed. It can be done by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reasoning as to why you should be unblocked. Only the blocked user can appeal their block. An '''administrator''' can then respond by adding the <code>|ans=yes/no/hold</code> and choosing yes or no based on whether or not the appeal was accepted or declined. == Syntax == When a user puts <code><nowiki>{{Unblock|insert reason here ~~~~}}</nowiki></code>, it will output as: {{Unblock|insert reason here (users signature)}} === Answers === ==== Yes ==== If an admin wants to respond, they can add two extra parameters. If an administrator adds the <code>|ans=yes</code> param, along with a fourth param filled in with their response, it will output as the following (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=yes|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=yes|an=admins note (admins signature)}} ==== No ==== In a similar way, appeals can be declined by making the <code>|ans=</code> param say "no" instead of "yes". Once once added, it will output as this (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=no|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=no|an=admins note (admins signature)}} ==== On hold ==== If an admins wants to place a block appeal on hold for whatever reason, they may do so by making the <code>|ans=</code> param say "hold". Once added, it will output as this (for reference, the following is <code><nowiki>{{Unblock|insert reason here ~~~~|ans=hold|an=(admins note) ~~~~}}</nowiki></code>) {{Unblock|insert reason here (users signature)|ans=hold|an=admins note (admins signature)}} 0a093156f3b9cdcd7ee6cec41e8f1bcb05efea95 MediaWiki:Common.css 8 37 340 249 2023-03-07T19:01:13Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ hr { display: block; unicode-bidi: isolate; margin-block-start: 0.5em; margin-block-end: 0.5em; margin-inline-start: auto; margin-inline-end: auto; overflow: hidden; border-style: inset; border-width: 1px; } f56a8796cf3f9b5541656f7dd9c009210722a5e3 341 340 2023-03-07T19:01:52Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ hr { display: block; unicode-bidi: isolate; margin-block-start: 0.5em; margin-block-end: 0.5em; margin-inline-start: auto; margin-inline-end: auto; overflow: hidden; } ae71093c2cb1453ec0a8af63cb10adb07fbdfee6 342 341 2023-03-07T19:02:23Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ hr { unicode-bidi: isolate; margin-block-start: 0.5em; margin-block-end: 0.5em; margin-inline-start: auto; margin-inline-end: auto; overflow: hidden; } f7d9ef8d9a407e4e6c639edd23fb1f4e5ecd9124 343 342 2023-03-07T19:02:57Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ hr { overflow: hidden; } 9cafd7bc3363e5966eae7caba4b705144a34dad9 344 343 2023-03-07T19:04:27Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ hr { } 8fb1141b402522789313093c34e1a5f5d9c58bb2 345 344 2023-03-07T19:04:55Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ dda06c329e0a6aa4192e552f0787f32b9f0bc4ac 346 345 2023-03-07T19:06:21Z BlindCartographer 2 css text/css /* CSS placed here will be applied to all skins */ @import url('https://fonts.googleapis.com/css2?family=Righteous&family=Roboto+Mono&display=swap'); /* Message Design */ .mw-warning-with-logexcerpt { border: 1px solid #BB7070; background-color: #FFDBDB; } /* Infobox Styling */ .portable-infobox { border: 1px solid #a2a9b1; border-radius: 0px; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; font-size: 88%; line-height: 1.5em; width: 22em; } .portable-infobox .pi-border-color { border-color: #FFFFFF } .portable-infobox .pi-header { background-color: #abdba7; vertical-align: middle; } .portable-infobox .pi-title { background-color: #abdba7; vertical-align: middle; font-family: Righteous; } /** Vertical Line Config **/ hr { overflow: hidden; } 9cafd7bc3363e5966eae7caba4b705144a34dad9 Game Development Wiki:Policy 4 44 353 233 2023-03-07T19:30:15Z BlindCartographer 2 /* Sockpuppetry */ wikitext text/x-wiki {{Policy page}} There are certain '''rules''' and '''policies''' that every user, both registered and non-registered, must follow. Noncompliance with the rules will result in the appropriate actions being taken by [[GDW:Staff|wiki staff]], which may be as minor as an edit reversion or as major as an indefinite ban. If a rule seems unclear, please ask a current member of the [[Project:Staff|wiki staff]] for clarification. Rules concerning edit/page quality can be found [[Project:Editing manual|here]]. == General Rules == ===Rule Zero=== Nobody is above the rules. All users, whether staff or not, are subject to punishment if necessary. There should be absolutely no favoritism, and attempting to find loopholes in the rules will not let you avoid punishment. ===Vandalism=== Vandalism or any sort of disruptive edits is strictly prohibited. The deliberate act of removing or destroying content on the wiki as well as purposefully spreading false or nonsensical information will not be tolerated. This applies to all articles and images. Acts of vandalism are always done maliciously; making an unhelpful edit by mistake cannot be considered vandalism. Vandalistic edits will be reverted and result in a warning and a block following afterwards if it continues. ===Wiki Content=== The wiki is primarily meant for the documentation of game development and anything related to it. Incredibly short pages will be deleted after 24 hours if it does not eventually get over 1,200 bytes. Rule breaking content will be removed. The first few offense will result in a warning. Further offenses or multiple offenses done in a short period of time will be counted as vandalism, resulting in either a lengthy or indefinite block. Adding explicitly NSFW or NSFL content will result in an immediate block. The wiki does not cover individual games. ===Copyright Violations=== Adding articles or files about websites that violate copyright or violating copyright in any way is unacceptable. Any and all forms of copyright violation will be removed. Any form of intentional copyright violations will result in an indefinite block. ===Page Creation=== You can create any page you want, as long as it is relevant to the wikis overarching topic. Do not create irrelevant or spam pages, as that will result in immediate action. Make sure all pages at least mildly follow the [[Project:Editing manual|Editing manual]]. Please make a page on your [[Special:MyPage/Sandbox|Sandbox]] page before making it an article. Rule breaking content will be removed. Varying amounts of warnings and blocks may be handed out depending on the situation. ===Sockpuppetry=== The general rule is one editor, one account. Do not use multiple accounts to mislead, deceive, vandalize or disrupt; to create the illusion of greater support for a position; to stir up controversy; or to circumvent a block, ban, or sanction. Do not ask your family or friends to create accounts to support you. Do not revive old unused accounts and use them as different users, or use another person's account. Normal alts are fine, but don't use them maliciously. Upon being found out, an indefinite block will be put in place for the sockpuppet account, and the main account will have its block lengthened greatly. ===Spamming Edits/Edit Farming=== Do not spam edits. This behavior is disruptive and clutters an article's history. This can range from writing the same thing over and over across an article to adding several unnecessary links to making several edits that consist of adding something then quickly undoing it. Creating pages over and over is also considered spam. Spamming in an article is generally seen as vandalism. Any form of spam is forbidden. Edits will be reverted. Offending users will be warned and may be blocked if they continue. ===Edit Wars=== An edit war is where two users undo each of their edits in one page due to a disagreement between each other. If you are in a situation where you are edit warring with someone, please message them on their message wall. Explain your reasoning as to why your edit should be published with research to back-up your reasoning. If the edit war continues after discussing, please contact an admin or content moderators. If you are the user with incorrect information, or your edits were not published, please do not harass or get frustrated with the people that were involved. Pages subject to edit warring will be temporarily locked, and users will be warned. Users continuing afterwards may be blocked. ===Behavior & Civility=== All contributors are expected to act civil and courteous towards other users. If there is a dispute, try and work it out peacefully with the other user, or just back away. Trolling is also not allowed, and will result in a punishment if it does not stop. Offending users will be warned. Users continuing after the warning(s) will be blocked. ===Spamming=== Do not spam. This behavior is annoying and can clutter a discussion. This can range from copypastas to needlessly long breaks to writing in a very distracting font. Making the same or very similar comments multiple times is also considered spam. Encouraging users to spam is also forbidden. Offending users will be warned. Users continuing after the warning will be blocked. ===Usernames=== Any username that is explicit, rude, inappropriate, derogatory, or in any way inappropriate will result in the account under the inappropriate username being permanently blocked. Usernames that advertise groups are also not allowed, nor are usernames that impersonate another user, a group, or well-known famous person. The user is allowed to make another account under a different and more appropriate name, however. == Blocking == <small>A more in-depth blocking policy can be found [[Project:Policy/Blocking policy|here]]</small> <br> Blocks can be assigned to users by [[Project:Administrators|administrators]] when the situation calls for it. Certain blocks may mildly deviate from the general length for any given reason, albeit rarely. The third block given to any user for any reason will be '''indefinite'''. === Appeals === If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. Only the blocked user can appeal their block, no third party may do so for another user. == Other Policies == * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] 33622b1195ea1bfe867b30c00e10b83d9e45f8fa Game Development Wiki:Policy/Blocking policy 4 129 354 2023-03-07T19:30:49Z BlindCartographer 2 Created page with "{{Policy page}} [[File:Deletion icon.svg|40px|right|link=]] Sometimes, when a user ignores warnings and continues to disrupt the ebb-and-flow of the wiki, an [[Project:Administrators|administrator]] will have to block that user from editing and posting for a certain amount of time. Blocked users or IP addresses can still access and read the wiki, but they can't edit, post, or interact in any other way, unless the blocking administrator has allowed them to edit their talk..." wikitext text/x-wiki {{Policy page}} [[File:Deletion icon.svg|40px|right|link=]] Sometimes, when a user ignores warnings and continues to disrupt the ebb-and-flow of the wiki, an [[Project:Administrators|administrator]] will have to block that user from editing and posting for a certain amount of time. Blocked users or IP addresses can still access and read the wiki, but they can't edit, post, or interact in any other way, unless the blocking administrator has allowed them to edit their talk page. == Why would a user be blocked? == Reasons such as vandalism or spam are some of the most common reasons for blocking a user or IP address, but any [[GDW:P|policy]] violations could count. If you are blocked, do not attempt to make a [[wikipedia:Help:Sockpuppet|sockpuppet]] account to evade bans, as that will heavily lengthen the ban on your main account and get the sock '''indefinitely''' blocked. === What happens when a blocked user tries to edit? === When a blocked user tries to edit, they are disallowed and will see a pop-up at the top of their screen. The pop-up looks like this (with changed info.): == Block Length == The length of a block varies from severity and reason, but no block should be shorter than 1 day. The third block for any account for any reason is indefinite, and may not be appealed. If a users IP address is also blocked with their account, there should very rarely be a block longer than 3 months for their IP unless there is a '''clear and current need for it'''. == Block Appeals == If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. #Keep all messages civil, kind, and courteous. #Include all details featured in your blocked message pop-up. #Do not lie. #Do not drag out the appeal for more than 2 weeks at most. It is suggested you don't use the latter method if you have the ability to edit your talk page. Only the blocked user can appeal their block, no third party can do so for them. Most users should still be able to edit their own talk page after a block unless it was for some == See also == [[Category:{{SITENAME}}]] 084be4471baeb4ce7bee3cd932bef05ca20e73e2 355 354 2023-03-07T19:34:59Z BlindCartographer 2 /* Block Appeals */ wikitext text/x-wiki {{Policy page}} [[File:Deletion icon.svg|40px|right|link=]] Sometimes, when a user ignores warnings and continues to disrupt the ebb-and-flow of the wiki, an [[Project:Administrators|administrator]] will have to block that user from editing and posting for a certain amount of time. Blocked users or IP addresses can still access and read the wiki, but they can't edit, post, or interact in any other way, unless the blocking administrator has allowed them to edit their talk page. == Why would a user be blocked? == Reasons such as vandalism or spam are some of the most common reasons for blocking a user or IP address, but any [[GDW:P|policy]] violations could count. If you are blocked, do not attempt to make a [[wikipedia:Help:Sockpuppet|sockpuppet]] account to evade bans, as that will heavily lengthen the ban on your main account and get the sock '''indefinitely''' blocked. === What happens when a blocked user tries to edit? === When a blocked user tries to edit, they are disallowed and will see a pop-up at the top of their screen. The pop-up looks like this (with changed info.): == Block Length == The length of a block varies from severity and reason, but no block should be shorter than 1 day. The third block for any account for any reason is indefinite, and may not be appealed. If a users IP address is also blocked with their account, there should very rarely be a block longer than 3 months for their IP unless there is a '''clear and current need for it'''. == Block Appeals == If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. #Keep all messages civil, kind, and courteous. #Include all details featured in your blocked message pop-up. #Do not lie. #Do not drag out the appeal for more than 2 weeks at most. It is suggested you don't use the latter method if you have the ability to edit your talk page. Only the blocked user can appeal their block, no third party can do so for them. Most users should still be able to edit their own talk page after a block unless it was for some urgent or extreme reason. Do not email an administrator in an attempt to appeal your block. == See also == [[Category:{{SITENAME}}]] 7af032c09665962cf94b09271fbf40b0d483afb7 357 355 2023-03-07T20:05:32Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} [[File:Stop hand nuvola.svg|50px|right|link=]] Sometimes, when a user ignores warnings and continues to disrupt the ebb-and-flow of the wiki, an [[Project:Administrators|administrator]] will have to block that user from editing and posting for a certain amount of time. Blocked users or IP addresses can still access and read the wiki, but they can't edit, post, or interact in any other way, unless the blocking administrator has allowed them to edit their talk page. == Why would a user be blocked? == Reasons such as vandalism or spam are some of the most common reasons for blocking a user or IP address, but any [[GDW:P|policy]] violations could count. If you are blocked, do not attempt to make a [[wikipedia:Help:Sockpuppet|sockpuppet]] account to evade bans, as that will heavily lengthen the ban on your main account and get the sock '''indefinitely''' blocked. === What happens when a blocked user tries to edit? === When a blocked user tries to edit, they are disallowed and will see a pop-up at the top of their screen. The pop-up looks like this (with changed info.): {{MediaWiki:Blockedtext}} == Block Length == The length of a block varies from severity and reason, but no block should be shorter than 1 day. The third block for any account for any reason is indefinite, and may not be appealed. If a users IP address is also blocked with their account, there should very rarely be a block longer than 3 months for their IP unless there is a '''clear and current need for it'''. == Block Appeals == If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. #Keep all messages civil, kind, and courteous. #Include all details featured in your blocked message pop-up. #Do not lie. #Do not drag out the appeal for more than 2 weeks at most. It is suggested you don't use the latter method if you have the ability to edit your talk page. Only the blocked user can appeal their block, no third party can do so for them. Most users should still be able to edit their own talk page after a block unless it was for some urgent or extreme reason. Do ''not'' email an administrator in an attempt to appeal your block. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] a252b2f52868351356941bb2bce381c2577042e1 363 357 2023-03-07T20:38:08Z BlindCartographer 2 Protected "[[Game Development Wiki:Policy/Blocking policy]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} [[File:Stop hand nuvola.svg|50px|right|link=]] Sometimes, when a user ignores warnings and continues to disrupt the ebb-and-flow of the wiki, an [[Project:Administrators|administrator]] will have to block that user from editing and posting for a certain amount of time. Blocked users or IP addresses can still access and read the wiki, but they can't edit, post, or interact in any other way, unless the blocking administrator has allowed them to edit their talk page. == Why would a user be blocked? == Reasons such as vandalism or spam are some of the most common reasons for blocking a user or IP address, but any [[GDW:P|policy]] violations could count. If you are blocked, do not attempt to make a [[wikipedia:Help:Sockpuppet|sockpuppet]] account to evade bans, as that will heavily lengthen the ban on your main account and get the sock '''indefinitely''' blocked. === What happens when a blocked user tries to edit? === When a blocked user tries to edit, they are disallowed and will see a pop-up at the top of their screen. The pop-up looks like this (with changed info.): {{MediaWiki:Blockedtext}} == Block Length == The length of a block varies from severity and reason, but no block should be shorter than 1 day. The third block for any account for any reason is indefinite, and may not be appealed. If a users IP address is also blocked with their account, there should very rarely be a block longer than 3 months for their IP unless there is a '''clear and current need for it'''. == Block Appeals == If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. #Keep all messages civil, kind, and courteous. #Include all details featured in your blocked message pop-up. #Do not lie. #Do not drag out the appeal for more than 2 weeks at most. It is suggested you don't use the latter method if you have the ability to edit your talk page. Only the blocked user can appeal their block, no third party can do so for them. Most users should still be able to edit their own talk page after a block unless it was for some urgent or extreme reason. Do ''not'' email an administrator in an attempt to appeal your block. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] a252b2f52868351356941bb2bce381c2577042e1 MediaWiki:Blockedtext 8 130 356 2023-03-07T20:02:05Z BlindCartographer 2 Created page with "<div id="mw-blocked-text" style="border: 1px solid #AAA; background: #FEE7E6; padding: 1.5em; width: 100%; box-sizing: border-box;"> <span style="font-size: 26px;"><center>[[File:Stop hand nuvola.svg|80px|link=Project:Policy/Blocking policy]] '''Your username or IP address has been [[Project:Policy/Blocking policy|blocked]].''' [[File:Stop hand nuvola.svg|80px|link=Project:Policy/Blocking policy]]</center></span> <center><span style="font-size: 18px;">This does not affec..." wikitext text/x-wiki <div id="mw-blocked-text" style="border: 1px solid #AAA; background: #FEE7E6; padding: 1.5em; width: 100%; box-sizing: border-box;"> <span style="font-size: 26px;"><center>[[File:Stop hand nuvola.svg|80px|link=Project:Policy/Blocking policy]] '''Your username or IP address has been [[Project:Policy/Blocking policy|blocked]].''' [[File:Stop hand nuvola.svg|80px|link=Project:Policy/Blocking policy]]</center></span> <center><span style="font-size: 18px;">This does not affect your ability to ''read'' wiki pages.</span></center> Your username or IP address has been [[Project:Policy/Blocking policy|blocked]] by $1 for the following reason(s): <div style="padding:10px; background:white; border:1px #666 solid;"> $2 </div> The following information is also relevant: * Start of block: $8 * Expiration of block: $6 * Intended blockee: $7 * Your current IP address is $3, and the block ID is #$5. <big>Even when blocked, you will ''usually'' still be able to edit your [[Special:Mytalk|user talk page]] and email administrators and other editors. For information on how to proceed, please read the '''[[Project:Policy/Blocking policy#Appeals|guide on block appeals]]'''.</big> Please include all above details in any queries you make. </div> f6f79aac69acc06a24122dbbfc13f232971b08ce 373 356 2023-03-07T21:04:03Z BlindCartographer 2 wikitext text/x-wiki <div id="mw-blocked-text" style="border: 1px solid #AAA; background: #FEE7E6; padding: 1.5em; width: 100%; box-sizing: border-box;"> <span style="font-size: 26px;"><center>[[File:Stop hand nuvola.svg|80px|link=Project:Policy/Blocking policy]] '''Your username or IP address has been [[Project:Policy/Blocking policy|blocked]].''' [[File:Stop hand nuvola.svg|80px|link=Project:Policy/Blocking policy]]</center></span> <center><span style="font-size: 18px;">This does not affect your ability to ''read'' wiki pages.</span></center> Your username or IP address has been [[Project:Policy/Blocking policy|blocked]] by $1 for the following reason(s): <div style="padding:10px; background:white; border:1px #666 solid;"> $2 </div> The following information is also relevant: * Start of block: $8 * Expiration of block: $6 * Intended blockee: $7 * Your current IP address is $3, and the block ID is #$5. <big>Even when blocked, you will ''usually'' still be able to edit your [[Special:Mytalk|user talk page]] and email administrators and other editors. For information on how to proceed, please read the '''[[Project:Policy/Blocking policy#Block Appeals|guide on block appeals]]'''.</big> Please include all above details in any queries you make. </div> 18ba0b1254a624045f20037492d10893ed3ade3f Game Development Wiki:Policy/Protection policy 4 131 358 2023-03-07T20:25:46Z BlindCartographer 2 Created page with "{{Policy page}} [[File:Semi-protection-shackle.svg|50px|right|link=]] Every so often, when a page is the victim of many bad-faith edits, has very high traffic, or is important to the wiki, it will be '''protected''' so only specific type of user can edit it. This process is titled "page protection" or "locking a page". == Why lock a page? == A page will be protected if it is often on the receiving end of many vandal or general bad-faith edits, has higher viewer traffic..." wikitext text/x-wiki {{Policy page}} [[File:Semi-protection-shackle.svg|50px|right|link=]] Every so often, when a page is the victim of many bad-faith edits, has very high traffic, or is important to the wiki, it will be '''protected''' so only specific type of user can edit it. This process is titled "page protection" or "locking a page". == Why lock a page? == A page will be protected if it is often on the receiving end of many vandal or general bad-faith edits, has higher viewer traffic than most other pages, or is overall a major or important part of the community. Page protection can occur for many reasons, but those are three of the most common. Pages can ''also'' be protected for any of the following reasons (but isn't limited to): *Edit warring. *A request from the owner (for company and studio articles). *It has been chosen as a featured article. *Any other reason that has been agreed upon by the wiki moderators. === Who can lock a page? === The only people who can lock, unlock, or edit a page that is fully-locked are [[Project:Administrators|administrators]] and [[Project:Moderation|moderators]]. == Protection types == === Semi-protected === [[File:Semi-protection-shackle.svg|50px|right|link=]] '''Semi-protection''' is when only [[Project:Staff#Autoconfirmed|autoconfirmed]] users are able to edit or move pages. This is often used in minor scenarios such as high-traffic pages or where vandalism has just started to pick up. === Fully protected === [[File:Full-protection-shackle.svg|50px|right|link=]] '''Full protection''' means that only content moderators and administrators can edit or move the page. This is often done when pages are often and heavily vandalized, and on important pages. === Upload protection === [[File:Upload-protection-shackle.svg|50px|right|link=]] '''Upload protection''' is for files on the wiki and defines who can upload a new version of any given file on the wiki. It can be semi or fully protected, and is normally used for important files on the wiki. === Creation protection === [[File:Create-protection-shackle.svg|50px|right|link=]] '''Creation protection''' is for pages that are not yet created, and can be protected so that only autoconfirmed users or content moderators and administrators can create the page. This is often done for pages that shouldn't be created, or pages that are often recreated after deletion. == How long should a page be protected? == Articles should only be protected for so long, and very rarely be indefinitely locked. Pages (not articles) in general can be locked for however long, and may very easily be indefinitely locked, but only for a good reason. == See also == * [[Project:Policy|Main policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] eca8e61ff8de9fbebef29c5f72ca2d6015bd3614 359 358 2023-03-07T20:26:10Z BlindCartographer 2 Protected "[[Game Development Wiki:Policy/Protection policy]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} [[File:Semi-protection-shackle.svg|50px|right|link=]] Every so often, when a page is the victim of many bad-faith edits, has very high traffic, or is important to the wiki, it will be '''protected''' so only specific type of user can edit it. This process is titled "page protection" or "locking a page". == Why lock a page? == A page will be protected if it is often on the receiving end of many vandal or general bad-faith edits, has higher viewer traffic than most other pages, or is overall a major or important part of the community. Page protection can occur for many reasons, but those are three of the most common. Pages can ''also'' be protected for any of the following reasons (but isn't limited to): *Edit warring. *A request from the owner (for company and studio articles). *It has been chosen as a featured article. *Any other reason that has been agreed upon by the wiki moderators. === Who can lock a page? === The only people who can lock, unlock, or edit a page that is fully-locked are [[Project:Administrators|administrators]] and [[Project:Moderation|moderators]]. == Protection types == === Semi-protected === [[File:Semi-protection-shackle.svg|50px|right|link=]] '''Semi-protection''' is when only [[Project:Staff#Autoconfirmed|autoconfirmed]] users are able to edit or move pages. This is often used in minor scenarios such as high-traffic pages or where vandalism has just started to pick up. === Fully protected === [[File:Full-protection-shackle.svg|50px|right|link=]] '''Full protection''' means that only content moderators and administrators can edit or move the page. This is often done when pages are often and heavily vandalized, and on important pages. === Upload protection === [[File:Upload-protection-shackle.svg|50px|right|link=]] '''Upload protection''' is for files on the wiki and defines who can upload a new version of any given file on the wiki. It can be semi or fully protected, and is normally used for important files on the wiki. === Creation protection === [[File:Create-protection-shackle.svg|50px|right|link=]] '''Creation protection''' is for pages that are not yet created, and can be protected so that only autoconfirmed users or content moderators and administrators can create the page. This is often done for pages that shouldn't be created, or pages that are often recreated after deletion. == How long should a page be protected? == Articles should only be protected for so long, and very rarely be indefinitely locked. Pages (not articles) in general can be locked for however long, and may very easily be indefinitely locked, but only for a good reason. == See also == * [[Project:Policy|Main policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] eca8e61ff8de9fbebef29c5f72ca2d6015bd3614 360 359 2023-03-07T20:34:35Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} [[File:Semi-protection-shackle.svg|50px|right|link=]] Every so often, when a page is the victim of many bad-faith edits, has very high traffic, or is important to the wiki, it will be '''protected''' so only specific type of user can edit it. This process is titled "page protection" or "locking a page". == Why lock a page? == A page will be protected if it is often on the receiving end of many vandal or general bad-faith edits, has higher viewer traffic than most other pages, or is overall a major or important part of the community. Page protection can occur for many reasons, but those are three of the most common. Pages can ''also'' be protected for any of the following reasons (but isn't limited to): *Edit warring. *A request from the owner (for company and studio articles). *It has been chosen as a featured article. *Any other reason that has been agreed upon by the wiki moderators. === Who can lock a page? === The only people who can lock, unlock, or edit a page that is fully-locked are [[Project:Administrators|administrators]] and [[Project:Moderation|moderators]]. == Protection types == === Semi-protected === [[File:Semi-protection-shackle.svg|50px|right|link=]] '''Semi-protection''' is when only [[Project:Staff#Autoconfirmed|autoconfirmed]] users are able to edit or move pages. This is often used in minor scenarios such as high-traffic pages or where vandalism has just started to pick up. === Fully protected === [[File:Full-protection-shackle.svg|50px|right|link=]] '''Full protection''' means that only content moderators and administrators can edit or move the page. This is often done when pages are often and heavily vandalized, and on important pages. === Upload protection === [[File:Upload-protection-shackle.svg|50px|right|link=]] '''Upload protection''' is for files on the wiki and defines who can upload a new version of any given file on the wiki. It can be semi or fully protected, and is normally used for important files on the wiki. === Creation protection === [[File:Create-protection-shackle.svg|50px|right|link=]] '''Creation protection''' is for pages that are not yet created, and can be protected so that only autoconfirmed users or content moderators and administrators can create the page. This is often done for pages that shouldn't be created, or pages that are often recreated after deletion. == How long should a page be protected? == Articles should only be protected for so long, and very rarely be indefinitely locked. Pages (not articles) in general can be locked for however long, and may very easily be indefinitely locked, but only for a good reason. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] c325581d9c6c4015184bc810c39352b5e2576f8f Game Development Wiki:Policy/Deletion policy 4 132 361 2023-03-07T20:37:27Z BlindCartographer 2 Created page with "{{Policy page}} [[File:Ambox warning.png|50px|right|link=]] When a page is not needed, doesn't fit the goal of the wiki, or is was created in bad-faith, it may be '''deleted'''. If a page was deleted, it had a good reason to be deleted. == Why delete a page? == If a page is deleted, it may have had several reasons why it was deleted. Some reasons may be but are not limited to: *Vandalism and/or spam. *Unnecessarily bringing back a deleted page. *Off-topic or unfitting...." wikitext text/x-wiki {{Policy page}} [[File:Ambox warning.png|50px|right|link=]] When a page is not needed, doesn't fit the goal of the wiki, or is was created in bad-faith, it may be '''deleted'''. If a page was deleted, it had a good reason to be deleted. == Why delete a page? == If a page is deleted, it may have had several reasons why it was deleted. Some reasons may be but are not limited to: *Vandalism and/or spam. *Unnecessarily bringing back a deleted page. *Off-topic or unfitting. *Duplicate of another page. *Heavily violates the [[GDW:EM|editing manual]]. *Violates any of the [[GDW:P|policies]]. Make sure that before deleting any page, you check what links there and the history of the page. == Who can delete a page? == Only users who have [[Project:Moderation|moderator]] or [[Project:Administrators|administrator]] rights can delete or restore a page, but any user can mark a page for deletion with the {{Tlx|Delete}} template. == Restoring a page == If an administrator or moderator believes there has been an error in the deletion of a page, they may choose to restore it. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] 4ca00e6ef430410da570fa6bfe4434ff2a4ec7ad 362 361 2023-03-07T20:37:48Z BlindCartographer 2 Protected "[[Game Development Wiki:Policy/Deletion policy]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} [[File:Ambox warning.png|50px|right|link=]] When a page is not needed, doesn't fit the goal of the wiki, or is was created in bad-faith, it may be '''deleted'''. If a page was deleted, it had a good reason to be deleted. == Why delete a page? == If a page is deleted, it may have had several reasons why it was deleted. Some reasons may be but are not limited to: *Vandalism and/or spam. *Unnecessarily bringing back a deleted page. *Off-topic or unfitting. *Duplicate of another page. *Heavily violates the [[GDW:EM|editing manual]]. *Violates any of the [[GDW:P|policies]]. Make sure that before deleting any page, you check what links there and the history of the page. == Who can delete a page? == Only users who have [[Project:Moderation|moderator]] or [[Project:Administrators|administrator]] rights can delete or restore a page, but any user can mark a page for deletion with the {{Tlx|Delete}} template. == Restoring a page == If an administrator or moderator believes there has been an error in the deletion of a page, they may choose to restore it. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] 4ca00e6ef430410da570fa6bfe4434ff2a4ec7ad 364 362 2023-03-07T20:39:27Z BlindCartographer 2 /* Who can delete a page? */ wikitext text/x-wiki {{Policy page}} [[File:Ambox warning.png|50px|right|link=]] When a page is not needed, doesn't fit the goal of the wiki, or is was created in bad-faith, it may be '''deleted'''. If a page was deleted, it had a good reason to be deleted. == Why delete a page? == If a page is deleted, it may have had several reasons why it was deleted. Some reasons may be but are not limited to: *Vandalism and/or spam. *Unnecessarily bringing back a deleted page. *Off-topic or unfitting. *Duplicate of another page. *Heavily violates the [[GDW:EM|editing manual]]. *Violates any of the [[GDW:P|policies]]. Make sure that before deleting any page, you check what links there and the history of the page. == Who can delete a page? == Only users who have [[Project:Moderation|moderator]] or [[Project:Administrators|administrator]] rights can delete or restore a page, but any user can mark a page for deletion with the {{Tlx|Delete}} or {{Tlx|Speedy delete}} template. == Restoring a page == If an administrator or moderator believes there has been an error in the deletion of a page, they may choose to restore it. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] 4fb1a2507b274682c450c5e4bd93d3f67fc58042 Template:Merge to 10 133 365 2023-03-07T20:52:05Z BlindCartographer 2 Created page with "{{Mbox | name = Merge from | demospace={{{demospace|}}} | type = move | image = [[File:Merge-arrow.svg|50px|alt=|link=]] | text = It has been suggested that this page be merged into [[{{{1|an article}}}]]. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> [[Category:Templates]] </noinclude>" wikitext text/x-wiki {{Mbox | name = Merge from | demospace={{{demospace|}}} | type = move | image = [[File:Merge-arrow.svg|50px|alt=|link=]] | text = It has been suggested that this page be merged into [[{{{1|an article}}}]]. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> [[Category:Templates]] </noinclude> f758e7e5ae1b5728dd07b769b659f3117ff1da12 366 365 2023-03-07T20:52:32Z BlindCartographer 2 Protected "[[Template:Merge to]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | name = Merge from | demospace={{{demospace|}}} | type = move | image = [[File:Merge-arrow.svg|50px|alt=|link=]] | text = It has been suggested that this page be merged into [[{{{1|an article}}}]]. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> [[Category:Templates]] </noinclude> f758e7e5ae1b5728dd07b769b659f3117ff1da12 367 366 2023-03-07T20:54:13Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | name = Merge to | demospace={{{demospace|}}} | type = move | image = [[File:Merge-arrow.svg|50px|alt=|link=]] | text = It has been suggested that this page be merged into [[{{{1|an article}}}]]. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> [[Category:Templates]] </noinclude> 3a788f99d4ca2c13d7c0716d1e0846abe661c2cc 368 367 2023-03-07T20:54:33Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | name = Merge to | demospace={{{demospace|}}} | type = move | image = [[File:Merge-arrow.svg|50px|alt=|link=]] | text = It has been suggested that this page be merged into [[{{{1|an article}}}]]. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> a00990016e39fa5ae658ffb0cff083a07ba0df35 Template:Merge from 10 134 369 2023-03-07T20:55:49Z BlindCartographer 2 Created page with "{{Mbox | name = Merge from | demospace={{{demospace|}}} | type = move | image = [[File:Mergefrom.svg|50px|alt=|link=]] | text = It has been proposed that [[{{{1|an article}}}]] be merged with this page. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude>" wikitext text/x-wiki {{Mbox | name = Merge from | demospace={{{demospace|}}} | type = move | image = [[File:Mergefrom.svg|50px|alt=|link=]] | text = It has been proposed that [[{{{1|an article}}}]] be merged with this page. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> affb34f9ca8a05ec0aec574d9cefc7e645b3a878 370 369 2023-03-07T20:56:05Z BlindCartographer 2 Protected "[[Template:Merge from]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | name = Merge from | demospace={{{demospace|}}} | type = move | image = [[File:Mergefrom.svg|50px|alt=|link=]] | text = It has been proposed that [[{{{1|an article}}}]] be merged with this page. ([[{{{discussion|{{{discuss|{{TALKPAGENAME}}}}}}}}|Discuss]]) }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> affb34f9ca8a05ec0aec574d9cefc7e645b3a878 Game Development Wiki:Policy/Merge policy 4 135 371 2023-03-07T21:00:30Z BlindCartographer 2 Created page with "{{Policy page}} [[File:Mergefrom.svg|right|link=]] [[File:Merge-arrow.svg|right|link=]] On any given wiki, sometimes pages can be very similar, and the community thinks that they should be joined together. When this happens, administrators can '''merge''' the pages and their history using [[Special:MergeHistory|a special tool]] or by manual work. == What is page merging? == Page merging is when an [[Project::Administrators|administrator]] chooses to join the page histor..." wikitext text/x-wiki {{Policy page}} [[File:Mergefrom.svg|right|link=]] [[File:Merge-arrow.svg|right|link=]] On any given wiki, sometimes pages can be very similar, and the community thinks that they should be joined together. When this happens, administrators can '''merge''' the pages and their history using [[Special:MergeHistory|a special tool]] or by manual work. == What is page merging? == Page merging is when an [[Project::Administrators|administrator]] chooses to join the page histories and a select amount of content that resides on two pages into one page. This is done when the community agrees, not just at the administrators leisure (but they do have final say). === How do I mark a page for merging? === In order to propose a merge between two pages, place the {{Tlx|Merge from|secondary page name}} template on the main page, and replace "secondary page name" with the page you want to be merged into that one. Then put the {{Tlx|Merge to|main page name}} template on the secondary page, and replace "main page name" with the name of the page you want it merged into. Please discuss page mergers on its talk page and give users about 2 weeks to a month to come up with an opinion. == Merge proposal guidelines == Before making a merge proposal, please keep some things in mind: #Are the two pages really that similar? Do they cover the same topic? If they are virtually the same page, please add the {{Tlx|Delete}} template instead (unless they both have large page histories and content, then a merge can still be proposed). #Would both of their histories and at least a bit of their content work well on the same page? #The smaller page should be merged with the larger page for ease of use. #Do not propose a merge if either page is a candidate for cleanup or deletion, wait until those are cleared up and solved. If your proposal does not follow these guidelines or just seems generally absurd, it may be declined early by an administrator. == Merge Reversal == In certain situations, a merger may need to be reversed by an administrator. This must be done manually, and can not be done using the tool mentioned earlier. A merge reversal does not necessarily blacklist another merger on those pages from taking place. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Blocking policy|Blocking policy]] [[Category:{{SITENAME}}]] b746ece02b11d5ce732e371fca590aeb1c617c75 372 371 2023-03-07T21:01:01Z BlindCartographer 2 Protected "[[Game Development Wiki:Policy/Merge policy]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} [[File:Mergefrom.svg|right|link=]] [[File:Merge-arrow.svg|right|link=]] On any given wiki, sometimes pages can be very similar, and the community thinks that they should be joined together. When this happens, administrators can '''merge''' the pages and their history using [[Special:MergeHistory|a special tool]] or by manual work. == What is page merging? == Page merging is when an [[Project::Administrators|administrator]] chooses to join the page histories and a select amount of content that resides on two pages into one page. This is done when the community agrees, not just at the administrators leisure (but they do have final say). === How do I mark a page for merging? === In order to propose a merge between two pages, place the {{Tlx|Merge from|secondary page name}} template on the main page, and replace "secondary page name" with the page you want to be merged into that one. Then put the {{Tlx|Merge to|main page name}} template on the secondary page, and replace "main page name" with the name of the page you want it merged into. Please discuss page mergers on its talk page and give users about 2 weeks to a month to come up with an opinion. == Merge proposal guidelines == Before making a merge proposal, please keep some things in mind: #Are the two pages really that similar? Do they cover the same topic? If they are virtually the same page, please add the {{Tlx|Delete}} template instead (unless they both have large page histories and content, then a merge can still be proposed). #Would both of their histories and at least a bit of their content work well on the same page? #The smaller page should be merged with the larger page for ease of use. #Do not propose a merge if either page is a candidate for cleanup or deletion, wait until those are cleared up and solved. If your proposal does not follow these guidelines or just seems generally absurd, it may be declined early by an administrator. == Merge Reversal == In certain situations, a merger may need to be reversed by an administrator. This must be done manually, and can not be done using the tool mentioned earlier. A merge reversal does not necessarily blacklist another merger on those pages from taking place. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Blocking policy|Blocking policy]] [[Category:{{SITENAME}}]] b746ece02b11d5ce732e371fca590aeb1c617c75 Template:Tmbox 10 136 374 2023-03-07T21:59:52Z BlindCartographer 2 Created page with "{{Mbox | demospace = talk | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }}" wikitext text/x-wiki {{Mbox | demospace = talk | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }} 15c040cbff71717f2fb253681ee6fd83574126b3 Template:Tmbox 10 136 375 374 2023-03-07T22:00:05Z BlindCartographer 2 Protected "[[Template:Tmbox]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Mbox | demospace = talk | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }} 15c040cbff71717f2fb253681ee6fd83574126b3 Template:Tutorial talk 10 101 376 262 2023-03-08T00:03:29Z BlindCartographer 2 wikitext text/x-wiki {{Tmbox |type= |image= [[File:Ambox important blue.svg|45px|link=]] |text= <center>'''This is a tutorial talk page'''</center> This talk page should be used for the discussion of '''[[Tutorial:{{BASEPAGENAME}}|{{BASEPAGENAME}}]]'''. If you have questions or are seeking further information about something that was not discussed enough in the main tutorial, please ask them here. Do not remove any questions on this page unless you plan on adding the answer and how to achieve it on the main article. ---- <small>Please check to see if any available archives have the answers you seek before posting here.</small> }} <noinclude> {{Documentation}} [[Category:Templates]] [[Category:Talk page management templates]] </noinclude> 5813ca556110e1d4e00067b08638230739fe7f62 Template:Ambox 10 48 377 104 2023-03-08T00:16:22Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = main | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }} 3ff074a80afd09d8fffa8ed05758d0edbad6660a Template:Stub 10 47 378 226 2023-03-08T00:16:34Z BlindCartographer 2 wikitext text/x-wiki {{Ambox | type = notice | image = [[File:Information icon4.png|45px|link=Main Page]] | text = <center>'''This article is a stub'''.</center> This article requires some more information, as it is too short. If you believe you have some good information to add to this article, please do so! }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 3ccb2c1863038654369483c8074fde54547f28b3 392 378 2023-03-08T01:27:07Z BlindCartographer 2 wikitext text/x-wiki {{Ambox | type = notice | image = [[File:Information icon4.png|45px|link=Main Page]] | text = <center>'''This article is a stub'''.</center> This article requires some more information, as it is too short. If you believe you have some good information to add to this article, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please do so]! }} <includeonly>[[Category:Stubs]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 2737d03513a29d109b338429e1781836dbd4143d Template:Cleanup 10 93 379 239 2023-03-08T00:17:54Z BlindCartographer 2 wikitext text/x-wiki {{Ambox | type = content | image = [[File:Ambox important.webp|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article is a candidate for cleanup.'''</center> This article requires some cleaning up to meet the wiki's [[Project:Editing manual|quality standards]]. If you think you can help it fit the standards better, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this article!] '''Reason:''' {{#if: {{{1|}}}|''{{{1}}}''|''No reason given''}}. }} <includeonly>[[Category:Candidates for cleanup]]</includeonly> <noinclude>{{Documentation}}</noinclude> 9d84264a310a7b3b832129020505ef77fcbbc771 Template:Ombox 10 42 380 223 2023-03-08T00:20:52Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }} <noinclude>[[Category:Templates]]</noinclude> 1cd3850804229945d9293e56d6c004b3d7901fbc 381 380 2023-03-08T00:22:13Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = Other | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }} <noinclude>[[Category:Templates]]</noinclude> d3a9896c423978c8a030611ec2e731140d84a2af Template:Speedy delete 10 92 382 237 2023-03-08T00:27:39Z BlindCartographer 2 wikitext text/x-wiki {{Ambox | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for speedy deletion]] | text = <center>'''This article is a candidate for speedy deletion.'''</center> This page has been marked as a candidate for speedy deletion by a member of the community. That means it is in '''extreme''' violations of the rules. {{#if: {{{1|}}}|&nbsp;It is marked as such for the following reason(s):'''{{{1}}}.|'''}} <br /> If you want to discuss the potential deletion of this page (whether it be to contest the deletion or give extra reasoning not covered by the reasons given above), please visit the pages talk page, or improve the page and remove the '''<code><nowiki>{{delete}}</nowiki></code>''' tag. <small>(''Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deleting.'')</small> }} <includeonly>[[Category:Candidates for speedy deletion]]</includeonly> <noinclude>[[Category:Article management templates]]</noinclude> 94b55f298d8236639bd5c37e5be85e4199416362 Template:Delete 10 91 383 235 2023-03-08T00:29:07Z BlindCartographer 2 wikitext text/x-wiki {{Ambox | type = delete | image = [[File:Ambox warning.png|45px|link=Category:Candidates for deletion]] | text = <center>'''This article is a candidate for deletion.'''</center> This page has been marked as a candidate for deletion by a member of the community. {{#if: {{{1|}}}|&nbsp;for the following reason(s):'''{{{1}}}.|'''}} If you want to discuss the potential deletion of this page or contest the potential deletion, please visit the pages talk page or improve the page and remove the '''<code><nowiki>{{Delete}}</nowiki></code>''' tag. <small>(''Remember to check [[Special:Whatlinkshere/{{FULLPAGENAME}}|what links here]] and [{{fullurl:{{FULLPAGENAME}}|action=history}} the page history] before deleting.'')</small> }} <includeonly>[[Category:Candidates for deletion]]</includeonly> <noinclude>{{Documentation}} [[Category:Article management templates]]</noinclude> da74b0f3dbf69a5d33a81f84dc6ad85241d33bf9 Template:User sandbox 10 72 384 166 2023-03-08T00:34:03Z BlindCartographer 2 wikitext text/x-wiki {{Ombox |text = <center>'''This is a sandbox page.'''</center> This page is a personal user sandbox, which means it is used by the respective owner to test and practice editing and formatting. It is not an article, but may be used to practice article creation. ---- <small>(If you want to visit your own sandbox, click [[Special:MyPage/Sandbox|here]].)</small> |image = [[File:Sandbox.png|45px|link=Category:User sandboxes]] |imagelink = Category:User sandboxes }} <includeonly>[[Category:User sandboxes]]</includeonly> <noinclude>[[Category:User management templates]]</noinclude> 1ec813982d5df14f26e9c5b55ba13c0c3a9f8560 MediaWiki:Abusefilter-intro 8 35 385 95 2023-03-08T00:36:22Z BlindCartographer 2 wikitext text/x-wiki Welcome to the Abuse Filter management interface. The Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions. This interface shows a list of defined filters, and allows them to be modified. Using the Abuse Filter, authorized users can configure a wide range of tests, which may help identify and prevent potentially harmful edits and other activities before they are added to the wiki, and the automatic actions to be taken. Important: * Make sure you are familiar with the [[GDW:P|wiki rules and policies]]. * Keep an eye on the log. * Check for any false positives. * Use the test filters before creating it individually. {{Ombox |type= content |image=[[File:Ambox important.webp|45px|link=]] |text=<center>'''Please be careful when modifying an abuse filter.'''</center> Even a single typo can potentially disrupt the editing of thousands of legitimate contributors. It is strongly recommended that you test your filters first before you enable any actions. If you are not sure about something, please ask for help. ---- <small>If you cause problems, you may have your abuse filter editor permission revoked.</small> }} ea3f1398fbeec4ae36923e21b3f360f7f6a07604 Template:Talk no request 10 137 386 2023-03-08T00:51:10Z BlindCartographer 2 Created page with "{{Tmbox |type= |image= [[File:Red information icon with gradient background.svg|45px|link=]] |text= <center>'''Edit requests are not currently being accepted.'''</center> Edit requests for {{BASEPAGENAME}} are currently not being accepted, and all made during this time will be '''declined'''. {{#if: {{{1}}}: This will remain in effect until {{{1}}}. }} }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude>" wikitext text/x-wiki {{Tmbox |type= |image= [[File:Red information icon with gradient background.svg|45px|link=]] |text= <center>'''Edit requests are not currently being accepted.'''</center> Edit requests for {{BASEPAGENAME}} are currently not being accepted, and all made during this time will be '''declined'''. {{#if: {{{1}}}: This will remain in effect until {{{1}}}. }} }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 8934de4b9cdcfbfc3839f138ecde32a50ae893fb 387 386 2023-03-08T01:03:32Z BlindCartographer 2 wikitext text/x-wiki {{Tmbox |type= |image= [[File:Red information icon with gradient background.svg|45px|link=]] |text= <center>'''Edit requests are not currently being accepted.'''</center> Edit requests for {{BASEPAGENAME}} are currently not being accepted, and all made during this time will be '''declined'''. {{#if: {{{1|}}}: This will remain in effect until {{{1}}}. }} }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 502177f788adb055d7816daee7b8e71d186f7a65 389 387 2023-03-08T01:05:07Z BlindCartographer 2 wikitext text/x-wiki {{Tmbox |type= |image= [[File:Red information icon with gradient background.svg|45px|link=]] |text= <center>'''Edit requests are not currently being accepted.'''</center> Edit requests for {{BASEPAGENAME}} are currently not being accepted, and all made during this time will be '''declined'''. {{#if: {{{1|}}} |This will remain in effect until {{{1}}}. }} }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 2dbc2f6d934a14039d1793dc109360dbc663db0c Template:Talk no request/doc 10 138 388 2023-03-08T01:03:43Z BlindCartographer 2 Created page with "The '''{{BASEPAGENAME}}''' template is meant to be used on talk pages that are not accepting edit requests for whatever reason. == Usage == The template can be added to a talk page by adding {{Tlx|Talk no request}}. If you want to add an end date, you can add {{Tlx|Talk no request|(end date)}} == Syntax == Adding {{Tlx|Talk no request}} results in the following: {{Talk no request|}} For adding an end date, you could add {{Tlx|Talk no request|April 24th, 2023}}, which..." wikitext text/x-wiki The '''{{BASEPAGENAME}}''' template is meant to be used on talk pages that are not accepting edit requests for whatever reason. == Usage == The template can be added to a talk page by adding {{Tlx|Talk no request}}. If you want to add an end date, you can add {{Tlx|Talk no request|(end date)}} == Syntax == Adding {{Tlx|Talk no request}} results in the following: {{Talk no request|}} For adding an end date, you could add {{Tlx|Talk no request|April 24th, 2023}}, which will result in the following (end date should be changed for inclusion): {{Talk no request|April 24, 2023}} 5d10d4296f17963d0b1fa69f1011e40c0e7862c4 Template:Account changed 10 139 390 2023-03-08T01:16:06Z BlindCartographer 2 Created page with "{{Ombox |image=[[File:Nuvola apps kuser rename.png|45px|link=User:{{{name|DifferentName}}}]] |text='''This user has moved accounts.'''<br /> This user has moved to an account under a new user: [[User:{{{name|DifferentName}}}|{{{name|DifferentName}}}]]. Please do not attempt to contact this account anymore. }} <noinclude> {{Documentation}} [[Category:User management templates]] [[Category:Templates]] </noinclude>" wikitext text/x-wiki {{Ombox |image=[[File:Nuvola apps kuser rename.png|45px|link=User:{{{name|DifferentName}}}]] |text='''This user has moved accounts.'''<br /> This user has moved to an account under a new user: [[User:{{{name|DifferentName}}}|{{{name|DifferentName}}}]]. Please do not attempt to contact this account anymore. }} <noinclude> {{Documentation}} [[Category:User management templates]] [[Category:Templates]] </noinclude> 6a9fd66814d6dfc0a9c3630e378d16ab8fecdd56 Template:Biased article 10 140 391 2023-03-08T01:26:31Z BlindCartographer 2 Created page with "{{Ambox | type = content | image = [[File:Ambox scales.svg|45px|link=Category:Biased articles]] | text = <center>'''This article may be biased!'''</center> This article may contain wording or false information biased towards a specific party's point of view. [{{fullurl:{{FULLPAGENAME}}|action=edit}} please correct the wording of this article] to make it more neutral. }} <includeonly>[[Category:Biased articles]]</includeonly> <noinclude>{{Documentation}} Category:Art..." wikitext text/x-wiki {{Ambox | type = content | image = [[File:Ambox scales.svg|45px|link=Category:Biased articles]] | text = <center>'''This article may be biased!'''</center> This article may contain wording or false information biased towards a specific party's point of view. [{{fullurl:{{FULLPAGENAME}}|action=edit}} please correct the wording of this article] to make it more neutral. }} <includeonly>[[Category:Biased articles]]</includeonly> <noinclude>{{Documentation}} [[Category:Article management templates]]</noinclude> 12c4e9b9a24e6c5ab8a8125d3132db5fa948881c Template:Request done 10 141 393 2023-03-08T01:42:58Z BlindCartographer 2 Created page with "[[File:Yes check.svg|18px|link=]] '''Done''', {{{1|your request has been completed.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki [[File:Yes check.svg|18px|link=]] '''Done''', {{{1|your request has been completed.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude> 7bb4da8aa52d34cff734e5b18b4fbc474d348f7d Template:Request not done 10 142 394 2023-03-08T01:44:25Z BlindCartographer 2 Created page with "[[File:X mark.svg|18px|link=]] '''Not done''', {{{1|your request has been declined.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki [[File:X mark.svg|18px|link=]] '''Not done''', {{{1|your request has been declined.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude> 4a3fef815645d3219c3fb14458b303679d0a97c1 Template:Request on hold 10 143 395 2023-03-08T01:47:42Z BlindCartographer 2 Created page with "[[File:Appointment orange.svg|18px|link=]] '''On hold''', {{{1|your request has been put on hold.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki [[File:Appointment orange.svg|18px|link=]] '''On hold''', {{{1|your request has been put on hold.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude> 00c4b8992050d4581335af3cf1d6fbf6c639b9c3 402 395 2023-03-08T02:07:31Z BlindCartographer 2 wikitext text/x-wiki [[File:Gnome-appointment-soon.svg|18px|link=]] '''On hold''', {{{1|your request has been put on hold.}}} {{{note|}}} <noinclude>{{Documentation}}</noinclude> 643703e857a5a71b37669c7531eaf95351d06de7 Template:Support vote 10 144 396 2023-03-08T01:58:58Z BlindCartographer 2 Created page with "[[File:Symbol support vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Support''' {{{note|I support this.}}} <noinclude> {{Documentation}} </noinclude>" wikitext text/x-wiki [[File:Symbol support vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Support''' {{{note|I support this.}}} <noinclude> {{Documentation}} </noinclude> 5bc49d4ce710c8c8b14ff61c42ef0bd6694150a4 401 396 2023-03-08T02:03:49Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol support vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Support''' {{{note|I support this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 402ebc6bbd99330e1016d4b49f3dc66c275a35bc 409 401 2023-03-08T02:14:30Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol support vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Support''' {{{note|I support this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> dcb7e129431b6f8e68a6b5ea4e1ed4cbd145a2fb Template:Neutral vote 10 145 397 2023-03-08T02:00:59Z BlindCartographer 2 Created page with "[[File:Symbol neutral vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Neutral''' {{{note|I am neutral about this.}}} <noinclude> {{Documentation}} </noinclude>" wikitext text/x-wiki [[File:Symbol neutral vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Neutral''' {{{note|I am neutral about this.}}} <noinclude> {{Documentation}} </noinclude> 71fdcee03b47beb4344e537aa6d0d044835a7493 400 397 2023-03-08T02:03:36Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol neutral vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Neutral''' {{{note|I am neutral about this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 946bf7ad281793df21546e01f948c1ab9ea733d8 406 400 2023-03-08T02:12:49Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol neutral vote.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Neutral''' {{{note|I am neutral about this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 67e3bef2f6335c7e7ffc96c2ece92548d9066185 Template:Oppose vote 10 146 398 2023-03-08T02:02:56Z BlindCartographer 2 Created page with "[[File:Symbol declined.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Oppose''' {{{note|I oppose this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude>" wikitext text/x-wiki [[File:Symbol declined.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Oppose''' {{{note|I oppose this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> cef6f793f9ef1b6b3d39b79d33359a6f6e16f2a9 407 398 2023-03-08T02:13:04Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol declined.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Oppose''' {{{note|I oppose this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 3ef1c91da09211ffc3bcbe7adfaff764f41adb9d Category:Vote templates 14 147 399 2023-03-08T02:03:22Z BlindCartographer 2 Created page with "Templates used for the purposes of wiki voting." wikitext text/x-wiki Templates used for the purposes of wiki voting. a0b865b6011f868bae8ac627c09a77df800a4b90 Template:Approved vote 10 148 403 2023-03-08T02:08:40Z BlindCartographer 2 Created page with "[[File:Symbol confirmed.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Approved''' {{{note|I approved this, and it has been passed.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude>" wikitext text/x-wiki [[File:Symbol confirmed.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}Approved''' {{{note|I approved this, and it has been passed.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> f7509ed368ed75fbdb0ea106c384a170ac52c1d1 408 403 2023-03-08T02:14:16Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol confirmed.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Approved''' {{{note|I approved this, and it has been passed.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 01eb7748941039d810035de1c3f35600854acf40 Template:On hold vote 10 149 404 2023-03-08T02:11:21Z BlindCartographer 2 Created page with "[[File:Symbol wait.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}On hold''' {{{note|I have put this on hold for the time being.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude>" wikitext text/x-wiki [[File:Symbol wait.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}} }}On hold''' {{{note|I have put this on hold for the time being.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 315598c7b78018a98514b6bf7bbe2d7645a76a00 405 404 2023-03-08T02:12:01Z BlindCartographer 2 wikitext text/x-wiki [[File:Symbol wait.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} On hold''' {{{note|I have put this on hold for the time being.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> a7b0897235a3123a71088239739f95fb1941a6c7 Template:Denied vote 10 150 410 2023-03-08T02:17:02Z BlindCartographer 2 Created page with "[[File:Symbol unrelated.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Denied''' {{{note|I have denied this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude>" wikitext text/x-wiki [[File:Symbol unrelated.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Denied''' {{{note|I have denied this.}}} <noinclude> {{Documentation}} [[Category:Vote templates]] </noinclude> 460bcb123f6d5ec18fe7930ba0b9ed8295fe5bd8 Module:Message box/configuration 828 19 411 325 2023-03-08T02:23:57Z BlindCartographer 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' }, wikinotice = { class = 'ambox-wikinotice', image = 'Site-Icon.png' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 2c97a1c6c1fa34854654a9111d8cac0b106dff1c 415 411 2023-03-08T02:31:11Z BlindCartographer 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' }, wikinotice = { class = 'ambox-wikinotice', image = 'Site-Icon.png' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 0a00f08207e8cfd7faed5ea77fc2d6cbad1d57a0 Template:Extended cleanup 10 151 412 2023-03-08T02:27:48Z BlindCartographer 2 Created page with "{{Ambox | type = content | image = [[File:Ambox outdated content.svg|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article has been a candidate for cleanup for an extended period of time.'''</center> This article requires some cleaning up and has not met the the wiki's [[Project:Editing manual|quality standards]] for an extended period of time, and may be deleted if it remains unfixed. If you think you can help it fit the standards better, [{{f..." wikitext text/x-wiki {{Ambox | type = content | image = [[File:Ambox outdated content.svg|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article has been a candidate for cleanup for an extended period of time.'''</center> This article requires some cleaning up and has not met the the wiki's [[Project:Editing manual|quality standards]] for an extended period of time, and may be deleted if it remains unfixed. If you think you can help it fit the standards better, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this article!] '''Reason:''' {{#if: {{{1|}}}|''{{{1}}}''|''No reason given''}}. }} <includeonly>[[Category:Candidates for cleanup]]</includeonly> <noinclude>{{Documentation}}</noinclude> 49557064d4c3ee06c42eceebbb4ee854e8dcbd97 413 412 2023-03-08T02:27:59Z BlindCartographer 2 Protected "[[Template:Extended cleanup]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Ambox | type = content | image = [[File:Ambox outdated content.svg|45px|link=Category:Candidates for cleanup]] | text = <center>'''This article has been a candidate for cleanup for an extended period of time.'''</center> This article requires some cleaning up and has not met the the wiki's [[Project:Editing manual|quality standards]] for an extended period of time, and may be deleted if it remains unfixed. If you think you can help it fit the standards better, [{{fullurl:{{FULLPAGENAME}}|action=edit}} please add to this article!] '''Reason:''' {{#if: {{{1|}}}|''{{{1}}}''|''No reason given''}}. }} <includeonly>[[Category:Candidates for cleanup]]</includeonly> <noinclude>{{Documentation}}</noinclude> 49557064d4c3ee06c42eceebbb4ee854e8dcbd97 Template:Extended cleanup/doc 10 152 414 2023-03-08T02:29:45Z BlindCartographer 2 Created page with "This template is to be used on pages that have been a candidate for cleanup for more than 8+ months." wikitext text/x-wiki This template is to be used on pages that have been a candidate for cleanup for more than 8+ months. c1d58b9d210e8864c892a42efb84a1d34c298c1b Template:Talk civil 10 153 416 2023-03-08T02:38:40Z BlindCartographer 2 Created page with "{{Tmbox |type= content |image= [[File:Ambox PR orange.svg|45px|link=]] |text= <center>'''Please all discussions below civil.'''</center> Do not leave hateful, distasteful, or generally unkind messages to others or in response to other's messages. Any such messages will result in them being removed an a punishment thereforth for the user in question. }} }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude>" wikitext text/x-wiki {{Tmbox |type= content |image= [[File:Ambox PR orange.svg|45px|link=]] |text= <center>'''Please all discussions below civil.'''</center> Do not leave hateful, distasteful, or generally unkind messages to others or in response to other's messages. Any such messages will result in them being removed an a punishment thereforth for the user in question. }} }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 13d0dd469f416be0db31875e925e0166381fa651 417 416 2023-03-08T02:38:49Z BlindCartographer 2 wikitext text/x-wiki {{Tmbox |type= content |image= [[File:Ambox PR orange.svg|45px|link=]] |text= <center>'''Please all discussions below civil.'''</center> Do not leave hateful, distasteful, or generally unkind messages to others or in response to other's messages. Any such messages will result in them being removed an a punishment thereforth for the user in question. }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 6c77f1464c79bcb590f8e8d5fade93d0432fe3fa 419 417 2023-03-08T02:39:52Z BlindCartographer 2 Protected "[[Template:Talk civil]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Tmbox |type= content |image= [[File:Ambox PR orange.svg|45px|link=]] |text= <center>'''Please all discussions below civil.'''</center> Do not leave hateful, distasteful, or generally unkind messages to others or in response to other's messages. Any such messages will result in them being removed an a punishment thereforth for the user in question. }} <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> 6c77f1464c79bcb590f8e8d5fade93d0432fe3fa Category:Talk message boxes 14 154 418 2023-03-08T02:39:02Z BlindCartographer 2 Created page with "Templates that are to be used on Talk pages." wikitext text/x-wiki Templates that are to be used on Talk pages. 6be98a010e2a379454c7127514cfae3c08ddcfb4 Category:Article message templates 14 155 420 2023-03-08T02:42:48Z BlindCartographer 2 Created page with "Templates that are to be used on Articles." wikitext text/x-wiki Templates that are to be used on Articles. df1454fc093c6b379765a85a4697cffd9fd2e2c6 GDW:ABT 0 156 421 2023-03-08T02:50:45Z BlindCartographer 2 Redirected page to [[Game Development Wiki:About]] wikitext text/x-wiki #REDIRECT [[Game Development Wiki:About]] 35fe3db9d6e5a5154fbf69e3a586470d7a62aba6 Game Development Wiki:Editing manual 4 157 422 2023-03-08T02:52:27Z BlindCartographer 2 Created page with "{{Policy page}} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. [[Category:{{SITENAME}}]]" wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. [[Category:{{SITENAME}}]] f3fe8058c4e3f1c5ff6053dd22a31827783369d7 423 422 2023-03-08T02:52:39Z BlindCartographer 2 Protected "[[Game Development Wiki:Editing manual]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. [[Category:{{SITENAME}}]] f3fe8058c4e3f1c5ff6053dd22a31827783369d7 424 423 2023-03-08T03:08:41Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. This page documents said customs and is a how-to guide on making good and safe edits on the wiki. This guide focuses on edits made in '''source editor''' as it is much neater, and as such all if not most edits should be made in source editor. This guide also goes hand in hand with the [[GDW:P|wiki rules]]. == Page Creation == Before creating a page, please make it on your [[Special:MyPage/Sandbox|sandbox]] page beforehand to make any further edits before fully releasing it. === Page Titles === Titles for pages should only have the first word capitalized (except for certain instances), excluding the namespace of the page. The first instance of the page title on any given page should be in '''bold'''. == General Guidelines == #'''This is a primarily English-speaking wiki'''. All pages and edits must be written in American English. Writing words in the style of British English out of habit will not be punished, but it will be reverted. This is to ensure that the writing on articles remain consistent. Pages should never be written or changed to be translated in another language. This will be reverted. Users of other languages are encouraged to use translating tools such as a translation software to read the pages. #*Examples: <u>favorite</u> over favourite, <u>gray</u> over grey, <u>paralyze</u> over paralyse, <u>defense</u> over defence. #'''Remain in 3rd person'''. Do not use personal pronouns like "I" or "me" or any words that give attention to the editors. Do not use "you" or "we" when referring to readers either. #'''Slang words should rarely be used'''. In almost all situations, formal language is expected to be used when writing or describing things as the wiki aims to be informative. Do not use slang words unless it is in a direct quote. #'''Keep it simple'''. Strive to make the wiki understandable for everyone without having to refer to a dictionary every other sentence. Use simple descriptions, understandable vocabulary and an easy-to-follow structuring that smoothly leads one sentence to the next. This does not mean editors cannot be descriptive or use synonyms to avoid repeating the same word over and over, but remember that word choice matters. Simplicity goes a long way to make reading through an article more enjoyable but variety helps make it interesting too. #'''Keep a neutral point of view'''. All articles should remain as neutral as possible. Do not word anything in a page in a manner that could possibly inject personal biases or viewpoints to the subject. Remain objective as much as possible to present an article's subject fairly and reliably without editorial bias. == Infoboxes == Infoboxes are the rectangular boxes on the right of articles that contain various information. Different infoboxes exist for different things, such as {{Tlx|Infobox programming language}} and {{Tlx|Infobox game engine}}. Almost all main articles should have infoboxes, but not every single one needs them, albeit in rare circumstances. Most of the fields in an infobox should be filled, but if you do not have the information or the info is unnecessary, said info may not need to be added. == Templates == Templates are featured on pages when they are fit. They come in many different shapes and forms, and sometimes have fields that can be filled in. For example; {{Tlx|delete|reason for deletion}}. A few of the most often used templates and their meaning will be presented below: *{{Tlx|Stub}} - For short pages lacking in information (a byte count of <span class="mw-plusminus-pos">1,200</span>-<span class="mw-plusminus-pos">2,400</span>) *{{Tlx|Delete}} - For pages that break the rules, have under 1,200 bytes, heavily violate the editing manual, etc. Pages with under 1,000 bytes have 24 hours to gain enough bytes before deletion. *{{Tlx|Cleanup}} - For pages that violate the editing tutorial in a non-extreme way. If a page stays a candidate for cleanup for too long, it may become a candidate for deletion. == Categories == Do not add unapproved categories or random and irrelevant categories to pages. A full list of categories can be found at [[Special:Categories]]. New categories can be proposed [[Project:Requests for categories|here]]. == Talk Pages == Every user should always sign their messages by putting four tildes (<nowiki>~~~~</nowiki>) at the end of the message. You should reply to message by either leaving a response on the messengers talk page, or by replying on your own wall. == Use of Wikipedia == We do not allow the direct copy and pasting or plagiarism of wikipedia articles or articles from other wikis. Using information provided in said articles is acceptable, but plagiarism is not. == Other editing manuals == * [[Project:Editing manual/Tutorial manual|Tutorial article manual]] [[Category:{{SITENAME}}]] f5cf5e8c9b9e8a290fa05d062a9b19a8558624da Template:Top icon 10 158 425 2023-03-08T03:19:39Z BlindCartographer 2 Created page with "<includeonly><nowiki /><!-- This nowiki tag helps prevent whitespace at the top of articles. -->{{#tag:indicator|[[File:{{{image|{{{imagename|{{{1|}}}}}}}}}|{{#if:{{{width|}}}|{{{width}}}|20}}x{{#if:{{{height|}}}|{{{height}}}|20}}px |{{#ifeq:{{{link|+}}}|{{{link|-}}}|link={{{link}}}|{{#ifeq:{{{wikilink|+}}}|{{{wikilink|-}}}|link={{{wikilink}}}|{{#ifeq:{{{2|+}}}|{{{2|-}}}|link={{{2}}}|}}}}}} |{{#if:{{{alt|}}}|alt={{{alt}}}}} |{{{text|{{{description|{{{3|}}}}}}}}}]] |na..." wikitext text/x-wiki <includeonly><nowiki /><!-- This nowiki tag helps prevent whitespace at the top of articles. -->{{#tag:indicator|[[File:{{{image|{{{imagename|{{{1|}}}}}}}}}|{{#if:{{{width|}}}|{{{width}}}|20}}x{{#if:{{{height|}}}|{{{height}}}|20}}px |{{#ifeq:{{{link|+}}}|{{{link|-}}}|link={{{link}}}|{{#ifeq:{{{wikilink|+}}}|{{{wikilink|-}}}|link={{{wikilink}}}|{{#ifeq:{{{2|+}}}|{{{2|-}}}|link={{{2}}}|}}}}}} |{{#if:{{{alt|}}}|alt={{{alt}}}}} |{{{text|{{{description|{{{3|}}}}}}}}}]] |name = {{#if:{{{sortkey|}}}|{{{sortkey}}}-}}{{#if:{{{name|}}}|{{{name}}}|{{#if:{{{id|}}}|{{{id}}}|{{{image|{{{imagename|{{{1|}}}}}}}}}}}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> ee2d4a59ce18efe20730d279c7ea597b9e9602bd 426 425 2023-03-08T03:19:52Z BlindCartographer 2 Protected "[[Template:Top icon]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly><nowiki /><!-- This nowiki tag helps prevent whitespace at the top of articles. -->{{#tag:indicator|[[File:{{{image|{{{imagename|{{{1|}}}}}}}}}|{{#if:{{{width|}}}|{{{width}}}|20}}x{{#if:{{{height|}}}|{{{height}}}|20}}px |{{#ifeq:{{{link|+}}}|{{{link|-}}}|link={{{link}}}|{{#ifeq:{{{wikilink|+}}}|{{{wikilink|-}}}|link={{{wikilink}}}|{{#ifeq:{{{2|+}}}|{{{2|-}}}|link={{{2}}}|}}}}}} |{{#if:{{{alt|}}}|alt={{{alt}}}}} |{{{text|{{{description|{{{3|}}}}}}}}}]] |name = {{#if:{{{sortkey|}}}|{{{sortkey}}}-}}{{#if:{{{name|}}}|{{{name}}}|{{#if:{{{id|}}}|{{{id}}}|{{{image|{{{imagename|{{{1|}}}}}}}}}}}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> ee2d4a59ce18efe20730d279c7ea597b9e9602bd Template:Featured article 10 159 427 2023-03-08T03:20:23Z BlindCartographer 2 Created page with "{{Top icon | imagename = cscr-featured.svg | wikilink = Project:Featured articles | alt = Featured article | description = This is a featured article. Click here for more information. | id = featured-star | maincat = [[Category:Featured articles]] }}" wikitext text/x-wiki {{Top icon | imagename = cscr-featured.svg | wikilink = Project:Featured articles | alt = Featured article | description = This is a featured article. Click here for more information. | id = featured-star | maincat = [[Category:Featured articles]] }} 100aad1d411cfa0978d1057b16c2294931720170 428 427 2023-03-08T03:20:39Z BlindCartographer 2 Protected "[[Template:Featured article]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Top icon | imagename = cscr-featured.svg | wikilink = Project:Featured articles | alt = Featured article | description = This is a featured article. Click here for more information. | id = featured-star | maincat = [[Category:Featured articles]] }} 100aad1d411cfa0978d1057b16c2294931720170 GDW:EM 0 160 429 2023-03-08T17:58:21Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Editing manual]] wikitext text/x-wiki #REDIRECT [[Project:Editing manual]] b4dabb705478b1d5e0a36920d2366d4e4467ec0a 430 429 2023-03-08T17:58:41Z BlindCartographer 2 Protected "[[GDW:EM]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Editing manual]] b4dabb705478b1d5e0a36920d2366d4e4467ec0a Template:Reflist 10 161 431 2023-03-08T18:04:08Z BlindCartographer 2 Created page with "<div class="references-small" {{#if: {{{colwidth|}}}| style="-moz-column-width:{{{colwidth}}}; -webkit-column-width:{{{colwidth}}}; column-width:{{{colwidth}}};" | {{#if: {{{1|}}}| style="-moz-column-count:{{{1}}}; -webkit-column-count:{{{1}}}; column-count:{{{1}}} }};" |}}> <references /></div> <noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude>" wikitext text/x-wiki <div class="references-small" {{#if: {{{colwidth|}}}| style="-moz-column-width:{{{colwidth}}}; -webkit-column-width:{{{colwidth}}}; column-width:{{{colwidth}}};" | {{#if: {{{1|}}}| style="-moz-column-count:{{{1}}}; -webkit-column-count:{{{1}}}; column-count:{{{1}}} }};" |}}> <references /></div> <noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> a4bdfb981a0fd45f84b743cd79aab5d03dcb9d74 432 431 2023-03-08T18:04:22Z BlindCartographer 2 Protected "[[Template:Reflist]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div class="references-small" {{#if: {{{colwidth|}}}| style="-moz-column-width:{{{colwidth}}}; -webkit-column-width:{{{colwidth}}}; column-width:{{{colwidth}}};" | {{#if: {{{1|}}}| style="-moz-column-count:{{{1}}}; -webkit-column-count:{{{1}}}; column-count:{{{1}}} }};" |}}> <references /></div> <noinclude>[[Category:Templates|{{PAGENAME}}]]</noinclude> a4bdfb981a0fd45f84b743cd79aab5d03dcb9d74 Gdscript 0 97 433 250 2023-03-08T18:17:30Z BlindCartographer 2 wikitext text/x-wiki {{Infobox programming language | title1= Gdscript | image1= [[File:gdscript.png]] | caption1= An example of Gdscript | filename_extension= .gd | format= [[Object orientated programming]] | developer(s)=[[Godot]] | initial_release=January 14th, 2014 | latest_release= March 1st, 2023 }} {{Stub}} '''Gdscript''' is an [[Object orientated programming|object orientated programming]] language created for the [[Godot]] [[Game engine|game engine]].<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref> == References == {{Reflist}} [[Category:Godot]] [[Category:Object orientated programming languages]] 451f797f8ce0d8b0725524565627c126fbef63b4 Template:Ombox 10 42 434 381 2023-03-08T22:07:41Z BlindCartographer 2 wikitext text/x-wiki {{Mbox | demospace = | type = {{{type|}}} | image = {{{image|[[File:Information icon4.png|45px|link=]]}}} | text = {{{text|}}} | small = {{{small|left}}} / left / no }} <noinclude>[[Category:Templates]]</noinclude> 501bed8adaacb66cbd6afcc8dca35053d346747a Module:Message box/configuration 828 19 435 415 2023-03-08T22:14:09Z BlindCartographer 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' }, wikinotice = { class = 'ambox-wikinotice', image = 'Site-Icon.png' }, void = { class = 'ambox-void', image = 'Ambox padlock red.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } d58dc7785996410f19c0a91c462e34a389be4e3b Template:Mbox/styles.css 10 79 436 323 2023-03-08T22:14:53Z BlindCartographer 2 sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } table.ambox-wikinotice { /* @noflip */ border-left: 10px solid #008000; /* Green */ } table.ambox-void { /* @noflip */ border-left: 10px solid #000000; /* Black */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } ee87de1130807db45033fe3ff3410fc704aa06e8 Module:Message box/ambox.css 828 82 437 324 2023-03-08T22:16:47Z BlindCartographer 2 sanitized-css text/css /** * {{ambox}} (article message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ambox { /* 10% = Will not overlap with other elements */ margin: 0 10%; border: 1px solid #a2a9b1; /* Default "notice" blue */ border-left: 10px solid #36c; background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. */ table.ambox + table.ambox, table.ambox + link + table.ambox, table.ambox + style + table.ambox { margin-top: -1px; } /* An empty narrow cell */ .ambox td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ .ambox th.mbox-text, .ambox td.mbox-text { border: none; /* 0.5em left/right */ padding: 0.25em 0.5em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ .ambox td.mbox-image { /* 0.5em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.5em; } /* The right image cell */ .ambox td.mbox-imageright { /* 0px left, 0.5em right */ /* @noflip */ padding: 2px 0.5em 2px 0; } table.ambox-notice { /* Blue */ border-left-color: #36c; } table.ambox-speedy { /* Pink */ background-color: #fee7e6; } table.ambox-delete, table.ambox-speedy { /* Red */ border-left-color: #b32424; } table.ambox-content { /* Orange */ border-left-color: #f28500; } table.ambox-style { /* Yellow */ border-left-color: #fc3; } table.ambox-move { /* Purple */ border-left-color: #9932cc; } table.ambox-protection { /* Gray-gold */ border-left-color: #a2a9b1; } table.ambox-wikinotice { /* Green */ border-left-color: #008000; } table.ambox-wikinotice { /* Black */ border-left-color: #000000; } /** * {{ambox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".ambox" classes. "html body.mediawiki .ambox" * is so they override both "table.ambox + table.ambox" * and "table.ambox + link + table.ambox" above. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .ambox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } /* For the "small=left" option. */ html body.mediawiki .ambox.mbox-small-left { margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } 295d630d1e708b55536fcbe8fd4d2a4da4ef4c1c 438 437 2023-03-08T22:17:24Z BlindCartographer 2 sanitized-css text/css /** * {{ambox}} (article message box) styles * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ table.ambox { /* 10% = Will not overlap with other elements */ margin: 0 10%; border: 1px solid #a2a9b1; /* Default "notice" blue */ border-left: 10px solid #36c; background-color: #fbfbfb; box-sizing: border-box; } /* Single border between stacked boxes. */ table.ambox + table.ambox, table.ambox + link + table.ambox, table.ambox + style + table.ambox { margin-top: -1px; } /* An empty narrow cell */ .ambox td.mbox-empty-cell { border: none; padding: 0; width: 1px; } /* The message body cell(s) */ .ambox th.mbox-text, .ambox td.mbox-text { border: none; /* 0.5em left/right */ padding: 0.25em 0.5em; /* Make all mboxes the same width regardless of text length */ width: 100%; } /* The left image cell */ .ambox td.mbox-image { /* 0.5em left, 0px right */ /* @noflip */ padding: 2px 0 2px 0.5em; } /* The right image cell */ .ambox td.mbox-imageright { /* 0px left, 0.5em right */ /* @noflip */ padding: 2px 0.5em 2px 0; } table.ambox-notice { /* Blue */ border-left-color: #36c; } table.ambox-speedy { /* Pink */ background-color: #fee7e6; } table.ambox-delete, table.ambox-speedy { /* Red */ border-left-color: #b32424; } table.ambox-content { /* Orange */ border-left-color: #f28500; } table.ambox-style { /* Yellow */ border-left-color: #fc3; } table.ambox-move { /* Purple */ border-left-color: #9932cc; } table.ambox-protection { /* Gray-gold */ border-left-color: #a2a9b1; } table.ambox-wikinotice { /* Green */ border-left-color: #008000; } table.ambox-void { /* Black */ border-left-color: #000000; } /** * {{ambox|small=1}} styles * * These ".mbox-small" classes must be placed after all other * ".ambox" classes. "html body.mediawiki .ambox" * is so they override both "table.ambox + table.ambox" * and "table.ambox + link + table.ambox" above. * * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-enwp-boxes.css * @revision 2021-07-15 */ /* For the "small=yes" option. */ html body.mediawiki .ambox.mbox-small { clear: right; float: right; margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } /* For the "small=left" option. */ html body.mediawiki .ambox.mbox-small-left { margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } 87fb7931c03a6cf7c6676f793ba1337dd64b2665 Template:ProtectSite 10 162 439 2023-03-08T22:31:17Z BlindCartographer 2 Created page with "{{Ambox | type = void | image = [[File:Stop x ambox with clock.svg|45px|link=]] | text = <center>'''The [[Main Page|{{SITENAME}}]] is currently on lockdown.</center> The [[GDW:ABT|{{SITENAME}}]] is currently on temporary, site-wide lockdown due to '''{{{reason|a vandalism attack}}}'''. Only {{{user rights|administrators and moderators}}} will be able to edit, upload files, or move pages. Any user will still be able to ''read'' wiki articles, but not interact with them..." wikitext text/x-wiki {{Ambox | type = void | image = [[File:Stop x ambox with clock.svg|45px|link=]] | text = <center>'''The [[Main Page|{{SITENAME}}]] is currently on lockdown.</center> The [[GDW:ABT|{{SITENAME}}]] is currently on temporary, site-wide lockdown due to '''{{{reason|a vandalism attack}}}'''. Only {{{user rights|administrators and moderators}}} will be able to edit, upload files, or move pages. Any user will still be able to ''read'' wiki articles, but not interact with them. This is a temporary measure and the wiki will be unlocked on {{{unlock|MM-DD-YY}}}. Thank you for your patience, and we hope to see you editing when the wiki is unlocked! }} <noinclude> {{Documentation}} </noinclude> 1efaa50bae2006466e2b87858ded5ed44f4d525f 440 439 2023-03-08T22:31:31Z BlindCartographer 2 Protected "[[Template:ProtectSite]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Ambox | type = void | image = [[File:Stop x ambox with clock.svg|45px|link=]] | text = <center>'''The [[Main Page|{{SITENAME}}]] is currently on lockdown.</center> The [[GDW:ABT|{{SITENAME}}]] is currently on temporary, site-wide lockdown due to '''{{{reason|a vandalism attack}}}'''. Only {{{user rights|administrators and moderators}}} will be able to edit, upload files, or move pages. Any user will still be able to ''read'' wiki articles, but not interact with them. This is a temporary measure and the wiki will be unlocked on {{{unlock|MM-DD-YY}}}. Thank you for your patience, and we hope to see you editing when the wiki is unlocked! }} <noinclude> {{Documentation}} </noinclude> 1efaa50bae2006466e2b87858ded5ed44f4d525f MediaWiki:Sitenotice 8 163 441 2023-03-08T22:33:53Z BlindCartographer 2 testing the [[Template:ProtectSite|ProtectSite]] template wikitext text/x-wiki {{ProtectSite |reason=raiding |unlock= March 9th, 2023 }} c9dd596cacd31c457fdfa6d5455a35399b803708 442 441 2023-03-08T22:34:42Z BlindCartographer 2 Replaced content with "-" wikitext text/x-wiki - 3bc15c8aae3e4124dd409035f32ea2fd6835efc9 Main Page 0 1 443 83 2023-03-08T22:38:53Z BlindCartographer 2 wikitext text/x-wiki __NOTOC__ <mainpage-leftcolumn-start /> {{MP-Header}} {{MP-Main}} <mainpage-endcolumn /> <mainpage-rightcolumn-start /> {{MP-Help}} <mainpage-endcolumn /> [[Category:{{SITENAME}}]] 2db5015f8586449a0c1f1c9c81fec630ef97675d Template:MP-Help 10 39 444 79 2023-03-08T22:44:25Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |border=#180F67 |background=#F7F6FF |header=<big><span style="font-family:Righteous;>'''Wiki Help'''</span></big> |text='''Not sure where to start?''' <br> If you are new to wikis, check out the '''[[m:Help:Contents|MediaWiki help pages]]'''. Please assist by contributing to or creating any articles whatsoever relating to websites. All positive contributions great or small will be fully appreciated. If you need any help, please ask a member of our admin team, [[Project:Administrators|located here.]] '''Adding content''' <br> If you feel like contributing to this wiki, please have a look at the [[Special:Wantedpages|pages]] that need creating and expanding. Currently we are hard at work on the wiki. Before contributing, please have a read of our [[Project:Policy|rules]] and [[Project:Editing manual|editing manual]]. These guides details all the standards across this wiki, to ensure it is the best it can be. }} 22439123dd6f9814698e9798d11d19b3f59b63ab Game Development Wiki:Editing manual 4 157 445 424 2023-03-08T22:45:27Z BlindCartographer 2 /* Templates */ wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. This page documents said customs and is a how-to guide on making good and safe edits on the wiki. This guide focuses on edits made in '''source editor''' as it is much neater, and as such all if not most edits should be made in source editor. This guide also goes hand in hand with the [[GDW:P|wiki rules]]. == Page Creation == Before creating a page, please make it on your [[Special:MyPage/Sandbox|sandbox]] page beforehand to make any further edits before fully releasing it. === Page Titles === Titles for pages should only have the first word capitalized (except for certain instances), excluding the namespace of the page. The first instance of the page title on any given page should be in '''bold'''. == General Guidelines == #'''This is a primarily English-speaking wiki'''. All pages and edits must be written in American English. Writing words in the style of British English out of habit will not be punished, but it will be reverted. This is to ensure that the writing on articles remain consistent. Pages should never be written or changed to be translated in another language. This will be reverted. Users of other languages are encouraged to use translating tools such as a translation software to read the pages. #*Examples: <u>favorite</u> over favourite, <u>gray</u> over grey, <u>paralyze</u> over paralyse, <u>defense</u> over defence. #'''Remain in 3rd person'''. Do not use personal pronouns like "I" or "me" or any words that give attention to the editors. Do not use "you" or "we" when referring to readers either. #'''Slang words should rarely be used'''. In almost all situations, formal language is expected to be used when writing or describing things as the wiki aims to be informative. Do not use slang words unless it is in a direct quote. #'''Keep it simple'''. Strive to make the wiki understandable for everyone without having to refer to a dictionary every other sentence. Use simple descriptions, understandable vocabulary and an easy-to-follow structuring that smoothly leads one sentence to the next. This does not mean editors cannot be descriptive or use synonyms to avoid repeating the same word over and over, but remember that word choice matters. Simplicity goes a long way to make reading through an article more enjoyable but variety helps make it interesting too. #'''Keep a neutral point of view'''. All articles should remain as neutral as possible. Do not word anything in a page in a manner that could possibly inject personal biases or viewpoints to the subject. Remain objective as much as possible to present an article's subject fairly and reliably without editorial bias. == Infoboxes == Infoboxes are the rectangular boxes on the right of articles that contain various information. Different infoboxes exist for different things, such as {{Tlx|Infobox programming language}} and {{Tlx|Infobox game engine}}. Almost all main articles should have infoboxes, but not every single one needs them, albeit in rare circumstances. Most of the fields in an infobox should be filled, but if you do not have the information or the info is unnecessary, said info may not need to be added. == Templates == Templates are featured on pages when they are fit. They come in many different shapes and forms, and sometimes have fields that can be filled in. For example; {{Tlx|Delete|reason for deletion}}. A few of the most often used templates and their meaning will be presented below: *{{Tlx|Stub}} - For short pages lacking in information (a byte count of <span class="mw-plusminus-pos">1,200</span>-<span class="mw-plusminus-pos">2,400</span>) *{{Tlx|Delete}} - For pages that break the rules, have under 1,200 bytes, heavily violate the editing manual, etc. Pages with under 1,000 bytes have 24 hours to gain enough bytes before deletion. *{{Tlx|Cleanup}} - For pages that violate the editing tutorial in a non-extreme way. If a page stays a candidate for cleanup for too long, it may become a candidate for deletion. == Categories == Do not add unapproved categories or random and irrelevant categories to pages. A full list of categories can be found at [[Special:Categories]]. New categories can be proposed [[Project:Requests for categories|here]]. == Talk Pages == Every user should always sign their messages by putting four tildes (<nowiki>~~~~</nowiki>) at the end of the message. You should reply to message by either leaving a response on the messengers talk page, or by replying on your own wall. == Use of Wikipedia == We do not allow the direct copy and pasting or plagiarism of wikipedia articles or articles from other wikis. Using information provided in said articles is acceptable, but plagiarism is not. == Other editing manuals == * [[Project:Editing manual/Tutorial manual|Tutorial article manual]] [[Category:{{SITENAME}}]] 2ba3bd574da4d74d593708e877f481b01f988353 449 445 2023-03-09T00:28:29Z BlindCartographer 2 /* Other editing manuals */ wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. This page documents said customs and is a how-to guide on making good and safe edits on the wiki. This guide focuses on edits made in '''source editor''' as it is much neater, and as such all if not most edits should be made in source editor. This guide also goes hand in hand with the [[GDW:P|wiki rules]]. == Page Creation == Before creating a page, please make it on your [[Special:MyPage/Sandbox|sandbox]] page beforehand to make any further edits before fully releasing it. === Page Titles === Titles for pages should only have the first word capitalized (except for certain instances), excluding the namespace of the page. The first instance of the page title on any given page should be in '''bold'''. == General Guidelines == #'''This is a primarily English-speaking wiki'''. All pages and edits must be written in American English. Writing words in the style of British English out of habit will not be punished, but it will be reverted. This is to ensure that the writing on articles remain consistent. Pages should never be written or changed to be translated in another language. This will be reverted. Users of other languages are encouraged to use translating tools such as a translation software to read the pages. #*Examples: <u>favorite</u> over favourite, <u>gray</u> over grey, <u>paralyze</u> over paralyse, <u>defense</u> over defence. #'''Remain in 3rd person'''. Do not use personal pronouns like "I" or "me" or any words that give attention to the editors. Do not use "you" or "we" when referring to readers either. #'''Slang words should rarely be used'''. In almost all situations, formal language is expected to be used when writing or describing things as the wiki aims to be informative. Do not use slang words unless it is in a direct quote. #'''Keep it simple'''. Strive to make the wiki understandable for everyone without having to refer to a dictionary every other sentence. Use simple descriptions, understandable vocabulary and an easy-to-follow structuring that smoothly leads one sentence to the next. This does not mean editors cannot be descriptive or use synonyms to avoid repeating the same word over and over, but remember that word choice matters. Simplicity goes a long way to make reading through an article more enjoyable but variety helps make it interesting too. #'''Keep a neutral point of view'''. All articles should remain as neutral as possible. Do not word anything in a page in a manner that could possibly inject personal biases or viewpoints to the subject. Remain objective as much as possible to present an article's subject fairly and reliably without editorial bias. == Infoboxes == Infoboxes are the rectangular boxes on the right of articles that contain various information. Different infoboxes exist for different things, such as {{Tlx|Infobox programming language}} and {{Tlx|Infobox game engine}}. Almost all main articles should have infoboxes, but not every single one needs them, albeit in rare circumstances. Most of the fields in an infobox should be filled, but if you do not have the information or the info is unnecessary, said info may not need to be added. == Templates == Templates are featured on pages when they are fit. They come in many different shapes and forms, and sometimes have fields that can be filled in. For example; {{Tlx|Delete|reason for deletion}}. A few of the most often used templates and their meaning will be presented below: *{{Tlx|Stub}} - For short pages lacking in information (a byte count of <span class="mw-plusminus-pos">1,200</span>-<span class="mw-plusminus-pos">2,400</span>) *{{Tlx|Delete}} - For pages that break the rules, have under 1,200 bytes, heavily violate the editing manual, etc. Pages with under 1,000 bytes have 24 hours to gain enough bytes before deletion. *{{Tlx|Cleanup}} - For pages that violate the editing tutorial in a non-extreme way. If a page stays a candidate for cleanup for too long, it may become a candidate for deletion. == Categories == Do not add unapproved categories or random and irrelevant categories to pages. A full list of categories can be found at [[Special:Categories]]. New categories can be proposed [[Project:Requests for categories|here]]. == Talk Pages == Every user should always sign their messages by putting four tildes (<nowiki>~~~~</nowiki>) at the end of the message. You should reply to message by either leaving a response on the messengers talk page, or by replying on your own wall. == Use of Wikipedia == We do not allow the direct copy and pasting or plagiarism of wikipedia articles or articles from other wikis. Using information provided in said articles is acceptable, but plagiarism is not. == Other editing manuals == * [[Project:Editing manual/Tutorial manual|Tutorial article manual]] * [[Project:Editing manual/Voting guide|Guide on voting]] [[Category:{{SITENAME}}]] d181c5f96b89ec8e68987ee920fc9aa7b54b3ec1 Template:Wiki note 10 164 446 2023-03-09T00:05:18Z BlindCartographer 2 Created page with "[[File:Pictogram voting info.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Note''' {{{note|Insert note here.}}} <noinclude> [[Category:Note templates]] </noinclude>" wikitext text/x-wiki [[File:Pictogram voting info.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Note''' {{{note|Insert note here.}}} <noinclude> [[Category:Note templates]] </noinclude> e4b07d7bf6313676e0a61923a6ba3c386fa3ef1a 447 446 2023-03-09T00:05:32Z BlindCartographer 2 Protected "[[Template:Wiki note]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki [[File:Pictogram voting info.svg|18px|link=]] '''{{#if: {{{1|}}}|{{{1}}}}} Note''' {{{note|Insert note here.}}} <noinclude> [[Category:Note templates]] </noinclude> e4b07d7bf6313676e0a61923a6ba3c386fa3ef1a 448 447 2023-03-09T00:11:14Z BlindCartographer 2 wikitext text/x-wiki [[File:Pictogram voting info.svg|18px|link=]] '''Note''' {{{1|Insert note here.}}} <noinclude> [[Category:Note templates]] </noinclude> 6fe017b6b94c90c45e897ac22ee94a1c7f546355 Game Development Wiki:Requests for categories/Header 4 165 450 2023-03-09T00:29:43Z BlindCartographer 2 Created page with "{{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they..." wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. }} 577ea141525b1be290aa0ff958d050b291392f93 451 450 2023-03-09T00:29:55Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for categories/Header]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. }} 577ea141525b1be290aa0ff958d050b291392f93 458 451 2023-03-09T00:47:53Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Requests for global rights preload = Requests for global rights/preload buttonlabel = Add request </inputbox> </div> }} 1b0defa61c94232ff1a77bc9b9101a0668df1a61 459 458 2023-03-09T00:48:53Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Requests for categories preload = Requests for global rights/preload buttonlabel = Add request </inputbox> </div> }} ff08def71b154f7a4934aecd5671c3590d0da4b0 462 459 2023-03-09T00:56:39Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for categories preload = Requests for global rights/preload buttonlabel = Add request </inputbox> </div> }} 6f85ccce9688658c3e6b23dfe71e3a27971d5d5d 463 462 2023-03-09T00:57:29Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">Requests for categories</span> |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for categories preload = Project:Requests for categories/preload buttonlabel = Add request </inputbox> </div> }} 5b7695cdc85e60f47ea14d96ec646632ea6d961f 474 463 2023-03-09T01:43:23Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon tag-ltr.svg|34px|link=]] Requests for categories</span> ---- |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for categories preload = Project:Requests for categories/preload buttonlabel = Add request </inputbox> </div> }} fb328b9937270f24173d50d1feb41921bbb34853 Game Development Wiki:Requests for categories 4 166 452 2023-03-09T00:31:09Z BlindCartographer 2 Created page with "{{/Header}}" wikitext text/x-wiki {{/Header}} 1ff841cd94035e8e943a943eb62bc319134852de 453 452 2023-03-09T00:31:20Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for categories]]" ([Edit=Allow only logged in users] (indefinite) [Move=Allow only logged in users] (indefinite)) wikitext text/x-wiki {{/Header}} 1ff841cd94035e8e943a943eb62bc319134852de 454 453 2023-03-09T00:31:42Z BlindCartographer 2 Changed protection settings for "[[Game Development Wiki:Requests for categories]]" ([Edit=Allow only logged in users] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{/Header}} 1ff841cd94035e8e943a943eb62bc319134852de 466 454 2023-03-09T01:15:15Z BlindCartographer 2 wikitext text/x-wiki {{/Header}} __NOTOC__ == BlindCartographer's Request for the Cool guys category == <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> User: [[User:BlindCartographer|BlindCartographer]] === Reason(s) for request === I think it would be neat if the cool guys category was added. === Additional comments given by user (if any) === I have no further comments === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === </div> b6d50cdd500ced140263a9e01e4ee33a9915c6fe 467 466 2023-03-09T01:16:16Z BlindCartographer 2 /* BlindCartographer's Request for the Cool guys category */ wikitext text/x-wiki {{/Header}} __NOTOC__ 86194b7a21d7721a368a271c1877f5084d671469 473 467 2023-03-09T01:34:59Z BlindCartographer 2 wikitext text/x-wiki {{/Header}} __NOTOC__ [[Category:Request pages]] 1dcfec5b15c861b91cb996d5d481f307b9de297c Template:Staff note 10 167 455 2023-03-09T00:41:26Z BlindCartographer 2 Created page with "[[File:Pictogram voting comment.svg|18px|link=]] '''{{{1|Staff}}} note''' {{{2|Insert note here.}}} <noinclude> [[Category:Note templates]] </noinclude>" wikitext text/x-wiki [[File:Pictogram voting comment.svg|18px|link=]] '''{{{1|Staff}}} note''' {{{2|Insert note here.}}} <noinclude> [[Category:Note templates]] </noinclude> 02e6689d7c3881e0175bafcfc1e9772e79f036c4 Game Development Wiki:Requests for categories/boilerplate 4 168 456 2023-03-09T00:41:59Z BlindCartographer 2 Created page with "== {{{user}}}'s Request for the {{{category}}} category == User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose ===" wikitext text/x-wiki == {{{user}}}'s Request for the {{{category}}} category == User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === 016f66859714408967145b86706ea2b16d99d782 457 456 2023-03-09T00:42:09Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for categories/boilerplate]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki == {{{user}}}'s Request for the {{{category}}} category == User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === 016f66859714408967145b86706ea2b16d99d782 464 457 2023-03-09T01:11:17Z BlindCartographer 2 wikitext text/x-wiki == {{{user}}}'s Request for the {{{category}}} category == <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === </div> 877800e5ee551ba1e04171dea6ad4dd1294f585a Game Development Wiki:Requests for categories/preload 4 169 460 2023-03-09T00:55:46Z BlindCartographer 2 Created page with "<div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for categories/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting a category. Please be thorough in this section and be sure to give any r..." wikitext text/x-wiki <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for categories/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting a category. Please be thorough in this section and be sure to give any reasons as to why it would be useful. --> |category= <!-- The name of the category you want added --> |comments= <!-- Replace this section with any additional comments you have for us. --> }} </div> a038eddd83481992c2d018c0351385efe8ca432a 461 460 2023-03-09T00:55:59Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for categories/preload]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for categories/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting a category. Please be thorough in this section and be sure to give any reasons as to why it would be useful. --> |category= <!-- The name of the category you want added --> |comments= <!-- Replace this section with any additional comments you have for us. --> }} </div> a038eddd83481992c2d018c0351385efe8ca432a 465 461 2023-03-09T01:13:33Z BlindCartographer 2 wikitext text/x-wiki __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for categories/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting a category. Please be thorough in this section and be sure to give any reasons as to why it would be useful. --> |category= <!-- The name of the category you want added --> |comments= <!-- Replace this section with any additional comments you have for us. --> }} ea1b901baf78d8deea515dff784d47f62438a495 Template:Request done 10 141 468 393 2023-03-09T01:17:31Z BlindCartographer 2 wikitext text/x-wiki [[File:Yes check.svg|18px|link=]] '''Done''', {{{1|your request has been completed.}}} {{{note|}}} <noinclude>{{Documentation}} [[Category:Request templates]] </noinclude> 2489414fb276512e0e18a218f4b73bc57f08597f Game Development Wiki:Community portal 4 170 469 2023-03-09T01:26:59Z BlindCartographer 2 Created page with "This page is the starting point for all editors of this wiki. It lists some of the pages you might like to use as you contribute here. * To follow the changes to this wiki, and to look out for new events and problem edits, use '''[[Special:Recentchanges|recent changes]]'''. * If you want to discuss anything about an article, you can use '''[[mw:Help:Talk pages|the talk pages]]'''. * For more general discussion, use '''[[Special:WikiForum|the discussions]]'''. * If you n..." wikitext text/x-wiki This page is the starting point for all editors of this wiki. It lists some of the pages you might like to use as you contribute here. * To follow the changes to this wiki, and to look out for new events and problem edits, use '''[[Special:Recentchanges|recent changes]]'''. * If you want to discuss anything about an article, you can use '''[[mw:Help:Talk pages|the talk pages]]'''. * For more general discussion, use '''[[Special:WikiForum|the discussions]]'''. * If you need help editing, you could start with '''[[mw:Help:Editing pages|the tutorial]] on editing'''. * You should also read our [[GDW:EM|editing manual]] for assistance with editing. ==New to Wikis?== *If you are new to wikis, you may want to read the '''[[mw:Project:Help|MediaWiki tutorial]]'''. *If you want to help but you're not sure where to start, try improving the various '''[[:Category:Stubs|stub]]''' articles by adding content. *Another helpful activity would be to check the list of '''[[Special:WantedPages|wanted pages]]''' for frequently linked-to articles that don't exist yet. *Ask a [[Project:Staff|staff member]] for assistance or guidance. ==How to help out== *If you want to help but you're not sure where to start, try improving the various '''[[:Category:Stubs|stub]]''' articles by adding content. *Another helpful activity would be to check the list of [[Special:WantedPages|wanted pages]] for frequently link-to articles that don't exist yet. *To follow the changes to this wiki, and to look out for new users and edits see '''[[Special:RecentChanges|recent changes]]'''. *You can find a list of useful templates on '''[[:Category:Templates]]'''. ==Looking for work?== There's always plenty to do to help with the wiki, but sometimes it's hard to know what needs to be done. Check out some of the following pages for ideas. *[[:Category:Stubs|Stubs]] - these are small pages that are lacking in content. You can help expand their content and write some more information on their pages. *[[Special:UncategorizedPages|Uncategorized Pages]] - these are pages that have no categories and will be harder to find. You can help add categories to these pages to create a bigger network of pages. *[[Special:Random|Stubbing, Cleanup, and Deleting]] - here at the Gamedev wiki, we have many pages and some that might not be up to standard. You can click the link to be taken to a random page and if that pages is lacking in content, needs cleaning up, or should be deleted, mark it with the templates [[Template:Stub|Stub]], [[Template:Cleanup|Cleanup]], or [[Template:Delete|Delete]]. [[Category:{{SITENAME}}]] 7154246d1670917d43080f2db62e938d74082977 470 469 2023-03-09T01:27:13Z BlindCartographer 2 Protected "[[Game Development Wiki:Community portal]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki This page is the starting point for all editors of this wiki. It lists some of the pages you might like to use as you contribute here. * To follow the changes to this wiki, and to look out for new events and problem edits, use '''[[Special:Recentchanges|recent changes]]'''. * If you want to discuss anything about an article, you can use '''[[mw:Help:Talk pages|the talk pages]]'''. * For more general discussion, use '''[[Special:WikiForum|the discussions]]'''. * If you need help editing, you could start with '''[[mw:Help:Editing pages|the tutorial]] on editing'''. * You should also read our [[GDW:EM|editing manual]] for assistance with editing. ==New to Wikis?== *If you are new to wikis, you may want to read the '''[[mw:Project:Help|MediaWiki tutorial]]'''. *If you want to help but you're not sure where to start, try improving the various '''[[:Category:Stubs|stub]]''' articles by adding content. *Another helpful activity would be to check the list of '''[[Special:WantedPages|wanted pages]]''' for frequently linked-to articles that don't exist yet. *Ask a [[Project:Staff|staff member]] for assistance or guidance. ==How to help out== *If you want to help but you're not sure where to start, try improving the various '''[[:Category:Stubs|stub]]''' articles by adding content. *Another helpful activity would be to check the list of [[Special:WantedPages|wanted pages]] for frequently link-to articles that don't exist yet. *To follow the changes to this wiki, and to look out for new users and edits see '''[[Special:RecentChanges|recent changes]]'''. *You can find a list of useful templates on '''[[:Category:Templates]]'''. ==Looking for work?== There's always plenty to do to help with the wiki, but sometimes it's hard to know what needs to be done. Check out some of the following pages for ideas. *[[:Category:Stubs|Stubs]] - these are small pages that are lacking in content. You can help expand their content and write some more information on their pages. *[[Special:UncategorizedPages|Uncategorized Pages]] - these are pages that have no categories and will be harder to find. You can help add categories to these pages to create a bigger network of pages. *[[Special:Random|Stubbing, Cleanup, and Deleting]] - here at the Gamedev wiki, we have many pages and some that might not be up to standard. You can click the link to be taken to a random page and if that pages is lacking in content, needs cleaning up, or should be deleted, mark it with the templates [[Template:Stub|Stub]], [[Template:Cleanup|Cleanup]], or [[Template:Delete|Delete]]. [[Category:{{SITENAME}}]] 7154246d1670917d43080f2db62e938d74082977 471 470 2023-03-09T01:27:26Z BlindCartographer 2 wikitext text/x-wiki This page is the starting point for all editors of this wiki. It lists some of the pages you might like to use as you contribute here. * To follow the changes to this wiki, and to look out for new events and problem edits, use '''[[Special:Recentchanges|recent changes]]'''. * If you want to discuss anything about an article, you can use '''[[mw:Help:Talk pages|the talk pages]]'''. * For more general discussion, use '''[[Special:WikiForum|the forums]]'''. * If you need help editing, you could start with '''[[mw:Help:Editing pages|the tutorial]] on editing'''. * You should also read our [[GDW:EM|editing manual]] for assistance with editing. ==New to Wikis?== *If you are new to wikis, you may want to read the '''[[mw:Project:Help|MediaWiki tutorial]]'''. *If you want to help but you're not sure where to start, try improving the various '''[[:Category:Stubs|stub]]''' articles by adding content. *Another helpful activity would be to check the list of '''[[Special:WantedPages|wanted pages]]''' for frequently linked-to articles that don't exist yet. *Ask a [[Project:Staff|staff member]] for assistance or guidance. ==How to help out== *If you want to help but you're not sure where to start, try improving the various '''[[:Category:Stubs|stub]]''' articles by adding content. *Another helpful activity would be to check the list of [[Special:WantedPages|wanted pages]] for frequently link-to articles that don't exist yet. *To follow the changes to this wiki, and to look out for new users and edits see '''[[Special:RecentChanges|recent changes]]'''. *You can find a list of useful templates on '''[[:Category:Templates]]'''. ==Looking for work?== There's always plenty to do to help with the wiki, but sometimes it's hard to know what needs to be done. Check out some of the following pages for ideas. *[[:Category:Stubs|Stubs]] - these are small pages that are lacking in content. You can help expand their content and write some more information on their pages. *[[Special:UncategorizedPages|Uncategorized Pages]] - these are pages that have no categories and will be harder to find. You can help add categories to these pages to create a bigger network of pages. *[[Special:Random|Stubbing, Cleanup, and Deleting]] - here at the Gamedev wiki, we have many pages and some that might not be up to standard. You can click the link to be taken to a random page and if that pages is lacking in content, needs cleaning up, or should be deleted, mark it with the templates [[Template:Stub|Stub]], [[Template:Cleanup|Cleanup]], or [[Template:Delete|Delete]]. [[Category:{{SITENAME}}]] c09d8198d1fa315faf2783e6be19e04db362ae60 Template:Infobox programming language 10 96 472 247 2023-03-09T01:31:50Z BlindCartographer 2 wikitext text/x-wiki <infobox> <title source="title1"> <default>{{PAGENAME}}</default> </title> <image source="image1"> <caption source="caption1"/> </image> <data source="filename_extension"> <label>Filename extension</label> </data> <data source="format"> <label>Format</label> </data> <data source="developer(s)"> <label>Developer(s)</label> </data> <data source="initial_release"> <label>Initial release</label> </data> <data source="latest_release"> <label>Latest release</label> </data> </infobox> <includeonly>[[Category:Programming languages]]</includeonly> 923ed162df80e27587b31d0777f14c0ac5d636b9 Game Development Wiki:Community noticeboard/header 4 171 475 2023-03-09T02:02:12Z BlindCartographer 2 Created page with "{{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon userGroup-ltr.svg|34px|link=]] Community noticeboard</span> ---- |text=This noticeboard is for community discussion, generally wiki-wide in nature or which relate to specific pages or users. For requests that require [[Project:Administrators|administrator]] intervention, please see the [[Project:Administrator Noticeboard|administrator noticeboard]]. If you are simply trying to discuss wi..." wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon userGroup-ltr.svg|34px|link=]] Community noticeboard</span> ---- |text=This noticeboard is for community discussion, generally wiki-wide in nature or which relate to specific pages or users. For requests that require [[Project:Administrators|administrator]] intervention, please see the [[Project:Administrator Noticeboard|administrator noticeboard]]. If you are simply trying to discuss with other wiki users, please visit the [[Special:WikiForum|wiki forums]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. On '''Community noticeboard''', you can: :* Start a community discussion :* Notify the community of a request (for user rights, categories, etc.) that you have made :* Ask questions with the community and the wiki or some technical aspect of the wiki you want to know more about If you would like to request... :* ...to be added to a wiki user group, read [[Game Development Wiki:Promotion to staff|this]] first, and then visit [[Project:Requests for user rights|here]] afterwards. :* ...a page be undeleted, you can find the proper page [[Project:Requests for undeletion|here]]. :* ...that an [[Project:Administrators|administrator]] warn or sanction a blatantly disruptive or spam only account, please see [[Project:Administrator Noticeboard|the administrator noticeboard]] :* ...that a new category be added to the wiki, see [[project:Requests for categories|here]]. <div style="text-align:center;">To add your request, type in a concise title in the box below, then click "Add topic".</div> <inputbox> type=commenttitle buttonlabel=Add topic summary= Add new topic page=Project:Community noticeboard </inputbox> }} e2ba5f199659dc0e00d1a915058d32d4fa54dd8c 477 475 2023-03-09T02:03:06Z BlindCartographer 2 Protected "[[Game Development Wiki:Community noticeboard/header]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon userGroup-ltr.svg|34px|link=]] Community noticeboard</span> ---- |text=This noticeboard is for community discussion, generally wiki-wide in nature or which relate to specific pages or users. For requests that require [[Project:Administrators|administrator]] intervention, please see the [[Project:Administrator Noticeboard|administrator noticeboard]]. If you are simply trying to discuss with other wiki users, please visit the [[Special:WikiForum|wiki forums]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. On '''Community noticeboard''', you can: :* Start a community discussion :* Notify the community of a request (for user rights, categories, etc.) that you have made :* Ask questions with the community and the wiki or some technical aspect of the wiki you want to know more about If you would like to request... :* ...to be added to a wiki user group, read [[Game Development Wiki:Promotion to staff|this]] first, and then visit [[Project:Requests for user rights|here]] afterwards. :* ...a page be undeleted, you can find the proper page [[Project:Requests for undeletion|here]]. :* ...that an [[Project:Administrators|administrator]] warn or sanction a blatantly disruptive or spam only account, please see [[Project:Administrator Noticeboard|the administrator noticeboard]] :* ...that a new category be added to the wiki, see [[project:Requests for categories|here]]. <div style="text-align:center;">To add your request, type in a concise title in the box below, then click "Add topic".</div> <inputbox> type=commenttitle buttonlabel=Add topic summary= Add new topic page=Project:Community noticeboard </inputbox> }} e2ba5f199659dc0e00d1a915058d32d4fa54dd8c Game Development Wiki:Community noticeboard 4 172 476 2023-03-09T02:02:45Z BlindCartographer 2 Created page with "{{/header}} [[Category:{{SITENAME}}]]" wikitext text/x-wiki {{/header}} [[Category:{{SITENAME}}]] 3a920a2007e0191ba4f328695f88647df622e163 Game Development Wiki:Requests for categories/Header 4 165 478 474 2023-03-09T02:07:00Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon tag-ltr.svg|34px|link=]] Requests for categories</span> ---- |text=On this page, users may request the addition of new official categories. Since you may only add official categories to pages, it is possible that the wiki may be lacking a category that could be beneficial. If you believe we could use a new category that is not already present, you may suggest it here. The community has a minimum of 7 days to vote on whether or not they believe the category should be added to the wiki. Once the voting process is over, an [[Project:Administrators|administrator]] will confirm or deny the addition of the new category based on the number of votes. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br /> <br> {{Wiki note|The category you are searching for may already exist. Please look through [[Special:Categories]] and make sure no categories that serve the same or a very similar purpose already exist. If they do, your request will be denied. If you are unsure if a category serves a similar purpose, read the category's page or, if there is no information there, ask a [[Project:Staff|staff member]].}} Notes: * You are only allow to vote once in a given request. * Please do not constantly re-request a category if it has been declined before. After it becomes excessive, it will be removed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for categories preload = Project:Requests for categories/preload buttonlabel = Add request </inputbox> </div> }} bcbbc51735a145c31a682acf94a89826d40dbba5 MediaWiki:Sidebar 8 25 479 227 2023-03-09T02:08:37Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** Game Development Wiki:Policy|Policies ** Game Development Wiki:Editing manual|Editing manual ** Special:WikiForum|Forums ** Special:AllPages|All pages ** Game Development Wiki:Staff|Wiki staff ** Project:Community noticeboard|Community noticeboard ** Project:Administrator Noticeboard|Administrator noticeboard ** Project:Community portal|Community portal * SEARCH * TOOLBOX * LANGUAGES fd9cb93f9fcd6469438929b3e23c325d7ed2e917 Game Development Wiki:Requests for user rights 4 173 480 2023-03-09T02:10:49Z BlindCartographer 2 Created page with "{{/header}} [[Category:{{SITENAME}}]]" wikitext text/x-wiki {{/header}} [[Category:{{SITENAME}}]] 3a920a2007e0191ba4f328695f88647df622e163 481 480 2023-03-09T02:11:09Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for user rights]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{/header}} [[Category:{{SITENAME}}]] 3a920a2007e0191ba4f328695f88647df622e163 511 481 2023-03-12T22:28:34Z BlindCartographer 2 Changed protection settings for "[[Game Development Wiki:Requests for user rights]]": Important to wiki ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{/header}} [[Category:{{SITENAME}}]] 3a920a2007e0191ba4f328695f88647df622e163 Gdscript 0 97 482 433 2023-03-09T02:18:41Z BlindCartographer 2 wikitext text/x-wiki {{Infobox programming language | title1= Gdscript | image1= [[File:gdscript.png]] | caption1= An example of Gdscript | filename_extension= .gd | format= [[Object orientated programming]] | developer(s)=[[Godot]] | initial_release=January 14th, 2014 | latest_release= March 1st, 2023 }} {{Stub}} '''Gdscript''' is an [[Object orientated programming|object orientated programming]] language created for the [[Godot]] [[Game engine|game engine]].<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref> Its syntax is similar to [[Python]]<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref>, however the two are completely seperate and independent scripting languages. == History == == Syntax == == References == {{Reflist}} [[Category:Godot]] [[Category:Object orientated programming languages]] ec7a94e302f02ba574e1cf2097c70ef2426b3fb4 518 482 2023-03-12T23:23:16Z BlindCartographer 2 wikitext text/x-wiki {{Infobox programming language | title1= Gdscript | image1= [[File:gdscript.png]] | caption1= An example of Gdscript | filename_extension= .gd | format= [[Object orientated programming]] | developer(s)=[[Godot]] | initial_release=January 14th, 2014 | latest_release= March 1st, 2023 }} {{Stub}} '''Gdscript''' is an [[Object orientated programming|object orientated programming]] language created for the [[Godot]] [[Game engine|game engine]].<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref> Its syntax is similar to [[Python]]<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref>, however the two are completely seperate and independent scripting languages. == History == == Syntax == == References == {{Reflist}} [[Category:Godot]] [[Category:Object orientated programming languages]] <comments /> 4e644a691433a8389a9bbe7764beaab070fa8044 519 518 2023-03-12T23:23:56Z BlindCartographer 2 wikitext text/x-wiki {{Infobox programming language | title1= Gdscript | image1= [[File:gdscript.png]] | caption1= An example of Gdscript | filename_extension= .gd | format= [[Object orientated programming]] | developer(s)=[[Godot]] | initial_release=January 14th, 2014 | latest_release= March 1st, 2023 }} {{Stub}} '''Gdscript''' is an [[Object orientated programming|object orientated programming]] language created for the [[Godot]] [[Game engine|game engine]].<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref> Its syntax is similar to [[Python]]<ref>https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html</ref>, however the two are completely seperate and independent scripting languages. == History == == Syntax == == References == {{Reflist}} [[Category:Godot]] [[Category:Object orientated programming languages]] ec7a94e302f02ba574e1cf2097c70ef2426b3fb4 Game Development Wiki:Administrator Noticeboard/header 4 174 483 2023-03-09T02:22:44Z BlindCartographer 2 Created page with "{{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon globe.svg|34px|link=]] Administrator noticeboard</span> ---- |text=The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are Special:Recentchanges|seen to be..." wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon globe.svg|34px|link=]] Administrator noticeboard</span> ---- |text=The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|Delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center><div class="plainlinks">[{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}} {{Button|Add new report|color=blue}}]</div></center> }} bcf4c3d8fe0b2922779710f2902153392332790b 484 483 2023-03-09T02:22:54Z BlindCartographer 2 Protected "[[Game Development Wiki:Administrator Noticeboard/header]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon globe.svg|34px|link=]] Administrator noticeboard</span> ---- |text=The '''Administrator noticeboard''' is one way through which users can notify [[Game Development Wiki:Administrators|administrators]] of issues needing administrative attention. While users are welcome to directly contact specific administrators on their talk page (especially if they are [[Special:Recentchanges|seen to be active]]), posting here can be an easier way of ensuring that at least one admin will notice an issue and respond to it promptly. Remember to sign (using four tildes: <code>~~<nowiki/>~~</code>) when posting an issue. '''Before posting''' an issue here, please consider the following: * This page is for ''reporting'' wiki issues. '''Please post discussions [[Game Development Wiki talk:Administrator Noticeboard|on the talk page]]'''. * Post only issues that ''require'' administrative action, i.e. blocking vandals, protecting pages, restoring deleted pages etc. * Do not post deletion requests here. Deletion requests should be made by adding '''{{Tlx|Delete|reason for deletion request}}''' to the top of the target page, which will then automatically mark the page as a [[:Category:Candidates for deletion|candidate for deletion]]. * Mediation requests between users should only be made once a resolution could not be reached between users. In case of vandalism, such requests should also be posted on an individual administrators talk page. Revert it first, anyone can do so. If the vandal created a new page, tag it for deletion. Assume good faith and consider leaving a message on that user's message wall to explain the reason. Post here only if the user has made several disruptive edits and/or persists despite a warning. Always ''avoid a revert war'' with the vandal; it is far better to wait until an admin has a chance to intervene. If a user must be reported here, please use their username as the subject title and a link to their contributions. <br> <br> <center><div class="plainlinks">[{{fullurl:{{SITENAME}}:{{BASEPAGENAME}}|action=edit&section=new}} {{Button|Add new report|color=blue}}]</div></center> }} bcf4c3d8fe0b2922779710f2902153392332790b Game Development Wiki:Administrator Noticeboard 4 86 485 243 2023-03-09T02:23:04Z BlindCartographer 2 Replaced content with "{{/header}} <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]]" wikitext text/x-wiki {{/header}} <!-- EDIT BELOW THIS LINE --> [[Category:{{SITENAME}}]] 8dcee5a229d9be94390d07bb8744b19c9bb29b18 Template:Account changed 10 139 486 390 2023-03-09T02:25:04Z BlindCartographer 2 wikitext text/x-wiki {{Ombox |image=[[File:Nuvola apps kuser rename.png|45px|link=User:{{{name|DifferentName}}}]] |text='''This user has moved accounts.'''<br /> This user has moved to an account under a new username: [[User:{{{name|DifferentName}}}|{{{name|DifferentName}}}]]. Please do not attempt to contact this account anymore. }} <noinclude> {{Documentation}} [[Category:User management templates]] [[Category:Templates]] </noinclude> 0b05c0eb8464ab1982f9efd4f66a71e46556e897 Template:Account hacked 10 175 487 2023-03-09T02:28:40Z BlindCartographer 2 Created page with "{{Ombox |image=[[File:Ambox useraccounts compromised.svg|45px|link=]] |text='''This user's account has been compromised.'''<br /> This user's account has been hacked and/or compromised. As such, they have been blocked and will remain blocked until they regain access of their account. {{#if: {{{new name|}}}|[[User:{{{new name|NewName}}}|{{{new name|NewName}}}]] is their new account.}} }} <noinclude> {{Documentation}} [[Category:User management templates]] Category:Templ..." wikitext text/x-wiki {{Ombox |image=[[File:Ambox useraccounts compromised.svg|45px|link=]] |text='''This user's account has been compromised.'''<br /> This user's account has been hacked and/or compromised. As such, they have been blocked and will remain blocked until they regain access of their account. {{#if: {{{new name|}}}|[[User:{{{new name|NewName}}}|{{{new name|NewName}}}]] is their new account.}} }} <noinclude> {{Documentation}} [[Category:User management templates]] [[Category:Templates]] </noinclude> d56e4606f2d41d022ba40df3ec3b2be4cc5613f8 Game Development Wiki:Requests for user rights/header 4 176 488 2023-03-09T02:31:45Z BlindCartographer 2 Created page with "{{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon unStar.svg|34px|link=]] Requests for user rights</span> ---- |text=On this page, users may request that they be promoted to [[Project:Staff|staff]] or granted the permissions of another user group. Before requesting user rights, please read [[Project:Staff/Promotion to staff|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only..." wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon unStar.svg|34px|link=]] Requests for user rights</span> ---- |text=On this page, users may request that they be promoted to [[Project:Staff|staff]] or granted the permissions of another user group. Before requesting user rights, please read [[Project:Staff/Promotion to staff|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allow to vote once in a given request. * If you have made a declined request within the last 30 days, you may not add another request until 30 days have passed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user rights preload = Project:Requests for user rights/preload buttonlabel = Add request </inputbox> </div> }} 460f1f4269fc062eba2881231411f96cff0be3d6 489 488 2023-03-09T02:32:05Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for user rights/header]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon unStar.svg|34px|link=]] Requests for user rights</span> ---- |text=On this page, users may request that they be promoted to [[Project:Staff|staff]] or granted the permissions of another user group. Before requesting user rights, please read [[Project:Staff/Promotion to staff|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allow to vote once in a given request. * If you have made a declined request within the last 30 days, you may not add another request until 30 days have passed. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user rights preload = Project:Requests for user rights/preload buttonlabel = Add request </inputbox> </div> }} 460f1f4269fc062eba2881231411f96cff0be3d6 508 489 2023-03-12T22:25:04Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon unStar.svg|34px|link=]] Requests for user rights</span> ---- |text=On this page, users may request that they be promoted to [[Project:Staff|staff]] or granted the permissions of another user group. Before requesting user rights, please read [[Project:Staff/Promotion to staff|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allow to vote once in a given request. * If you have made a declined request within the last 30 days, you may not add another request until 30 days have passed. * After leaving a request, please notify the community on the [[GDW:CN|community noitceboard]] that you have made a new request. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user rights preload = Project:Requests for user rights/preload buttonlabel = Add request </inputbox> </div> }} 229f0a474ad10c47eb48e035fd63924d4c10e37b 513 508 2023-03-12T22:35:59Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon unStar.svg|34px|link=]] Requests for user rights</span> ---- |text=On this page, users may request that they be promoted to [[Project:Staff|staff]] or granted the permissions of another user group. Before requesting user rights, please read [[Project:Staff/Promotion to staff|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allowed to vote once in a given request. * If you have made a declined request within the last 30 days, you may not add another request until 30 days have passed. * After leaving a request, please notify the community on the [[GDW:CN|community noitceboard]] that you have made a new request. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user rights preload = Project:Requests for user rights/preload buttonlabel = Add request </inputbox> </div> }} 40dce9a4ca886f98e22a3c7197d557e4524d33ec Game Development Wiki:Staff 4 74 490 232 2023-03-09T02:33:54Z BlindCartographer 2 /* Promotion */ wikitext text/x-wiki The Gamedev Wiki has a team of users with extra rights, abilities, and privileges, referred to '''staff members''', that use their abilities to moderate and keep the balance of the wiki. The staff are experienced and respected users chosen by the community, and sworn in by the wiki Bureaucrats. The staff are merely normal users with a few extra rights, and are not above the rules, nor should they be treated differently than any other users. If there is a case of a staff member abusing their rights, or you personally believe this is the case, please contact a [[Project:Staff#Bureaucrat|bureaucrat]] or the [[User talk:BlindCartographer|wiki manager]] and the situation will be dealt with accordingly. If it is a bureaucrat or the wiki manager that is abusing their rights, please contact a [[m:Stewards' Noticeboard|Miraheze steward]]. == Wiki Staff == Below the different staff user groups, their hierarchy, and their abilities will be listed below. === Executive Wiki Manager === The '''executive wiki manager''' (or simply just the '''wiki manager'''), is the head bureaucrat and lead staff member. They have the same rights and abilities as a normal bureaucrat, but they are typically the most experienced bureaucrat and have the longest standing history on the wiki. They have absolute final say in extremely important wiki decisions, like using [[Special:ProtectSite|ProtectSite]], major wiki updates/changes, and promoting new bureaucrats. Despite this, they are not "wiki owners" as it is not one individual person who owns the wiki, but instead the community at large. There may only be one wiki manager at a time, and the current wiki manager is [[User:BlindCartographer|BlindCartographer]]. === Bureaucrat === '''Bureaucrats''' are users who share the same rights as [[Project:Staff#Administrator|administrators]], but they also have a few extra rights for directly managing the wiki. They have, in addition to all administrator rights, access to [[mw:Extension:ManageWiki|ManageWiki]], [[mw:Extension:ProtectSite|ProtectSite]], and have perhaps their main ability, which is to edit and promote others to all user rights other than global Miraheze rights. While they can promote and demote others to all user rights on this page, they can not remove the bureaucrat right from another user, as that requires [[m:Stewards|steward]] intervention. The list of all current bureaucrats can be found [[Special:ListUsers/bureaucrat|here]]. === Administrator === '''Administrators''' are users who have all the abilities of [[Project:Staff#Moderator|Moderators]], [[Project:Staff#Interface Administrator|interface administrators]], and [[Project:Staff#Forum Administrator|forum administrators]]. In addition, they have the ability to block and unblock users, mass delete pages, and edit the abusefilter, among other many other administrative duties and rights. They can also promote other users to the rollbacker group and [[Project:Staff#Confirmed|confirmed]] group. The list of all current admins can be found [[Special:ListUsers/sysop|here]]. === Interface Administrator === '''Interface administrators''' are users who can edit [[Special:AllMessages|all pages]] in the MediaWiki namespace (system messages), edit sitewide CSS, JavaScript, and JSON pages and files, along with other users personal CSS, JavaScript, and JSON pages and files. Since these abilities hold a lot of power and can pose a security risk if misused, only extremely trusted users are given access to the privileges of this group. The list of all current interface admins can be found [[Special:ListUsers/interface-admin|here]]. === Moderator === '''Moderators''' are users who can delete/undelete pages, protect/unprotect pages, and edit protected pages, along with having the rights of a [[Project:Staff#Rollbacker|rollbacker]]. They also have the ability to edit, delete/undelete, protect/undelete, and move files. The list of all current moderators can be found [[Special:ListUsers/moderator|here]]. === Forum Administrator === '''Forum administrators''' are users with the ability to add, edit and delete categories on the [[Special:WikiForum|forums]], along with the ability to edit and delete threads and replies on the [[Special:WikiForum|forums]]. However, due to a bug which posed a major security risk, the forums are currently disabled, and will be until the bug is resolved. The list of all current forum administrators can be found [[Special:ListUsers/forumadmin|here]]. === Rollbacker === '''Rollbackers''' are users who are given one extra ability; the right to undo several edits by a single user in a row in a single click. Since this right is made to fight vandalism and spam, users who have consistently proven to be good at reverting vandalism are assigned to this group. The list of all current rollbackers can be found [[Special:ListUsers/rollbacker|here]]. == Non-Staff user groups == === Abusefilter Editor === '''Abusefilter editors''' are users who can edit and add [[Special:Abusefilter|abuse filters]], along with being able to view private abuse filters. They can also revert changes made by any given abuse filter. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current abusefilter editors can be found [[Special:ListUsers/abusefilter-editor|here]]. === Autoconfirmed === '''Autoconfirmed''' users are users who have been on the wiki for more than 4 days and have made at least 10 edits on the wiki. Autoconfirmed users have the ability to edit semi-protected pages, and the ability to skip CAPTCHAs. Since this makes up such a large majority of users and the bulk of all users, users in this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Autopatrolled === '''Autopatrolled''' users are users who's edits are automatically patrolled, so that an administrator doesn't have to do it manually. They can also patrol the edits of other users, and like autoconfirmed users, can skip CAPTCHAs. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Bot === '''Bot''' is a group which classifies a user as an automated process or bot. These users have their edits hidden in the [[Special:RecentChanges]] by default to prevent them from clogging the page (though you can view their recent actions by removing the "Human (not bot)" filter in Special:RecentChanges). In addition to that, they have certain other rights assigned to them to prevent them from getting caught in the CAPTCHAs, prevent them from getting caught in IP-based rate limits, among a few other rights to prevent any interference for legitimate bots. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. The list of all current bots can be found [[Special:ListUsers/bot|here]]. === Confirmed === '''Confirmed''' users are users that have the exact same abilities as an [[Project:Staff#Autoconfirmed|autoconfirmed]] user, except they are manually promoted to this user group, unlike the autopromotion of autoconfirmed users. Users assigned to this group are not considered staff, unlike the other user groups in the "wiki staff" section. === Founder === The wiki '''founder''' is the user who is responsible for founding and creating the wiki. While the founder is currently staff and executive wiki manager, if and when he retires, he will no longer be staff, which is why this role is not considered to be staff. The founder role has no additional rights or abilities. The wiki founder is [[User:BlindCartographer|BlindCartographer]]. == Promotion == The methods of promotion to different user groups can be found [[Project:Staff/Promotion to staff|here]]. [[Category:{{SITENAME}}]] 96ef622478944ebaa7e7de4af72d3aa751c107f5 Game Development Wiki:Staff/Promotion to staff 4 177 491 2023-03-09T02:34:06Z BlindCartographer 2 Created page with "There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group." wikitext text/x-wiki There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. 25c38099359fd55d0a715ce12fafabb0b2a79c88 492 491 2023-03-09T02:34:15Z BlindCartographer 2 Protected "[[Game Development Wiki:Staff/Promotion to staff]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. 25c38099359fd55d0a715ce12fafabb0b2a79c88 495 492 2023-03-10T01:02:58Z BlindCartographer 2 wikitext text/x-wiki {{Staff note|Wiki manager|These are currently malleable as the wiki is in need of more staff members, however some of it still applies.}} There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. This page documents said qualifications, and what they are for each individual user group. If there remains any confusion or you have any questions, please ask a [[Project:Staff#Bureaucrat|bureaucrat]]. == Staff == === Bureaucrat === Unlike the other staff groups, there is no direct way to request [[Project:Staff#Bureaucrat|bureaucrat]] rights. The current wiki bureaucrats will talk amongst themselves and decide which administrator(s) they think would be a good fit for bureaucrat, and they will then hold a vote on the [[GDW:CN|community noticeboard]] for 14 days, allowing the community to vote on whether or not said user should be a bureaucrat. If the community consensus thinks that said admin should become a bureaucrat, they will be promoted. In order to qualify for bureaucrat rights, you must be a trusted and experienced administrator that has used their rights well, who has had their rights for a minimum of 60 days. === Administrator === === Interface Administrator === === Moderator === === Forum Administrator === === Rollbacker === == Other user groups == === Abusefilter editor === === Autopatroll === === Bot === === Confirmed === There is no formal way to request promotion to the [[Project:Staff#Confirmed|confirmed]] user group. The two most common reasons somebody becomes confirmed is if they directly ask a bureaucrat for it and they oblige, or if an already (auto)confirmed user makes a secondary account and doesn't want to wait the four days to become autoconfirmed. == Request user rights == Visit [[Project:Requests for user rights|this page]] if you would like to request user rights. e419531b1f5120201bc77ea9fd133733bda81dd3 497 495 2023-03-12T21:28:37Z BlindCartographer 2 wikitext text/x-wiki {{Staff note|Wiki manager|These are currently malleable as the wiki is in need of more staff members, however some of it still applies.}} There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. This page documents said qualifications, and what they are for each individual user group. If there remains any confusion or you have any questions, please ask a [[Project:Staff#Bureaucrat|bureaucrat]]. == Staff == === Bureaucrat === Unlike the other staff groups, there is no direct way to request [[Project:Staff#Bureaucrat|bureaucrat]] rights. The current wiki bureaucrats will talk amongst themselves and decide which administrator(s) they think would be a good fit for bureaucrat, and they will then hold a vote on the [[GDW:CN|community noticeboard]] for 14 days, allowing the community to vote on whether or not said user should be a bureaucrat. If the community consensus thinks that said admin should become a bureaucrat, they will be promoted. === Administrator === In order for a user to become an administrator, they must have been a well established, friendly, and trusted moderator or interface/forum administrator for a minimum of 60 days. The recommended minimum amount of edits for a user applying to become an administrator is 2,000. === Interface Administrator === In order for a user to become an interface administrator, they must have been a well established, friendly, and user, with a minimum of 1,000 edits. Since the rights of an interface administrator could be misused to pose a security risk, this is exclusively given to well-trusted users who must show that they have experience with CSS, JavaScript, and/or JSON. === Moderator === === Forum Administrator === === Rollbacker === == Other user groups == === Abusefilter editor === === Autopatroll === === Bot === === Confirmed === There is no formal way to request promotion to the [[Project:Staff#Confirmed|confirmed]] user group. The two most common reasons somebody becomes confirmed is if they directly ask a bureaucrat for it and they oblige, or if an already (auto)confirmed user makes a secondary account and doesn't want to wait the four days to become autoconfirmed. == Request user rights == Visit [[Project:Requests for user rights|this page]] if you would like to request user rights. 801349041c94cd8c9e1f0671089e4b08e7921306 501 497 2023-03-12T22:11:38Z BlindCartographer 2 wikitext text/x-wiki {{Staff note|Wiki manager|These are currently malleable as the wiki is in need of more staff members, however some of it still applies.}} There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. This page documents said qualifications, and what they are for each individual user group. If there remains any confusion or you have any questions, please ask a [[Project:Staff#Bureaucrat|bureaucrat]]. == Staff == === Bureaucrat === Unlike the other staff groups, there is no direct way to request [[Project:Staff#Bureaucrat|bureaucrat]] rights. The current wiki bureaucrats will talk amongst themselves and decide which administrator(s) they think would be a good fit for bureaucrat, and they will then hold a vote on the [[GDW:CN|community noticeboard]] for 14 days, allowing the community to vote on whether or not said user should be a bureaucrat. If the community consensus thinks that said admin should become a bureaucrat, they will be promoted. === Administrator === In order for a user to become an administrator, they must be a well established, friendly, and trusted moderator or interface/forum administrator for a minimum of 60 days. The recommended minimum amount of edits for a user applying to become an administrator is 2,000. === Interface Administrator === In order for a user to become an interface administrator, they must be a well established, friendly, and responsible user with a minimum of 1,200 edits. Since the rights of an interface administrator could be misused to pose a security risk, this is exclusively given to well-trusted users who must show that they have experience with CSS, JavaScript, and/or JSON. === Moderator === In order for a user to become a moderator, they must be a well established, friendly, and responsible rollbacker with a minimum of 1,000 edits. === Forum Administrator === Currently, the [[Special:WikiForum|forums]] are disabled due to a security risk, but they will be reopened as soon as the problem is solved. === Rollbacker === In order for a user to become an rollbacker, they must be a well established, responsible, friendly, and active user with a minimum of 300 edits. A user is more likely to become a rollbacker if they have consistently reverted vandalism throughout their time on the wiki. == Other user groups == === Abusefilter editor === In order for a user to become an abusefilter editor, they must be a well established, responsible, friendly, and active user, with a minimum of 500 edits who has shown they that understand the proper syntax and regex of the [[Special:AbuseFilter|AbuseFilter]]. === Autopatroll === In order for a user to become an autopatroller, they must have been a well established, responsible, friendly, and active user, with a minimum of 400 edits. === Bot === In order for a user to become a bot, they must list the following information in their request (which should be made by the bot operator, not the bot account): * The username of the bot * If it is semi or fully automated * The ''exact'' scope and purpose of the bot * What software it uses, or how it acts as a bot. If a user would like to apply for a temporary bot flag on one of their accounts, they may contact a bureaucrat on their talk page, following the process as listed above. === Confirmed === There is no formal way to request promotion to the [[Project:Staff#Confirmed|confirmed]] user group. The two most common reasons somebody becomes confirmed is if they directly ask a bureaucrat for it and they oblige, or if an already (auto)confirmed user makes a secondary account and doesn't want to wait the four days to become autoconfirmed. == Demotion == A user may be demoted or removed from a user group if they have shown to be inactive for 60 or more days, have abused their rights, have broken the wiki rules, or have done something similar. == Request user rights == Visit [[Project:Requests for user rights|this page]] if you would like to request user rights. 31d0a987122c63634263d426a6f0a07dffba94bc 502 501 2023-03-12T22:12:19Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} {{Staff note|Wiki manager|These are currently malleable as the wiki is in need of more staff members, however some of it still applies.}} There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. This page documents said qualifications, and what they are for each individual user group. If there remains any confusion or you have any questions, please ask a [[Project:Staff#Bureaucrat|bureaucrat]]. == Staff == === Bureaucrat === Unlike the other staff groups, there is no direct way to request [[Project:Staff#Bureaucrat|bureaucrat]] rights. The current wiki bureaucrats will talk amongst themselves and decide which administrator(s) they think would be a good fit for bureaucrat, and they will then hold a vote on the [[GDW:CN|community noticeboard]] for 14 days, allowing the community to vote on whether or not said user should be a bureaucrat. If the community consensus thinks that said admin should become a bureaucrat, they will be promoted. === Administrator === In order for a user to become an administrator, they must be a well established, friendly, and trusted moderator or interface/forum administrator for a minimum of 60 days. The recommended minimum amount of edits for a user applying to become an administrator is 2,000. === Interface Administrator === In order for a user to become an interface administrator, they must be a well established, friendly, and responsible user with a minimum of 1,200 edits. Since the rights of an interface administrator could be misused to pose a security risk, this is exclusively given to well-trusted users who must show that they have experience with CSS, JavaScript, and/or JSON. === Moderator === In order for a user to become a moderator, they must be a well established, friendly, and responsible rollbacker with a minimum of 1,000 edits. === Forum Administrator === Currently, the [[Special:WikiForum|forums]] are disabled due to a security risk, but they will be reopened as soon as the problem is solved. === Rollbacker === In order for a user to become an rollbacker, they must be a well established, responsible, friendly, and active user with a minimum of 300 edits. A user is more likely to become a rollbacker if they have consistently reverted vandalism throughout their time on the wiki. == Other user groups == === Abusefilter editor === In order for a user to become an abusefilter editor, they must be a well established, responsible, friendly, and active user, with a minimum of 500 edits who has shown they that understand the proper syntax and regex of the [[Special:AbuseFilter|AbuseFilter]]. === Autopatroll === In order for a user to become an autopatroller, they must have been a well established, responsible, friendly, and active user, with a minimum of 400 edits. === Bot === In order for a user to become a bot, they must list the following information in their request (which should be made by the bot operator, not the bot account): * The username of the bot * If it is semi or fully automated * The ''exact'' scope and purpose of the bot * What software it uses, or how it acts as a bot If a user would like to apply for a temporary bot flag on one of their accounts, they may contact a bureaucrat on their talk page, following the process as listed above. === Confirmed === There is no formal way to request promotion to the [[Project:Staff#Confirmed|confirmed]] user group. The two most common reasons somebody becomes confirmed is if they directly ask a bureaucrat for it and they oblige, or if an already (auto)confirmed user makes a secondary account and doesn't want to wait the four days to become autoconfirmed. == Demotion == A user may be demoted or removed from a user group if they have shown to be inactive for 60 or more days, have abused their rights, have broken the wiki rules, or have done something similar. == Request user rights == Visit [[Project:Requests for user rights|this page]] if you would like to request user rights. 2421afa48f13dc1e9fb260b27a5e8d8ecde6449d 510 502 2023-03-12T22:28:08Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} {{Staff note|Wiki manager|These are currently malleable as the wiki is in need of more staff members, however some of it still applies.}} There are certain qualifications a user must meet into order to become a [[Project:{{BASEPAGENAME}}|staff member]] or be promoted to a certain user group. This page documents said qualifications, and what they are for each individual user group. If there remains any confusion or you have any questions, please ask a [[Project:Staff#Bureaucrat|bureaucrat]]. == Staff == === Bureaucrat === Unlike the other staff groups, there is no direct way to request [[Project:Staff#Bureaucrat|bureaucrat]] rights. The current wiki bureaucrats will talk amongst themselves and decide which administrator(s) they think would be a good fit for bureaucrat, and they will then hold a vote on the [[GDW:CN|community noticeboard]] for 14 days, allowing the community to vote on whether or not said user should be a bureaucrat. If the community consensus thinks that said admin should become a bureaucrat, they will be promoted. === Administrator === In order for a user to become an administrator, they must be a well established, friendly, and trusted moderator or interface/forum administrator for a minimum of 60 days. The recommended minimum amount of edits for a user applying to become an administrator is 2,000. === Interface Administrator === In order for a user to become an interface administrator, they must be a well established, friendly, and responsible user with a minimum of 1,200 edits. Since the rights of an interface administrator could be misused to pose a security risk, this is exclusively given to well-trusted users who must show that they have experience with CSS, JavaScript, and/or JSON. === Moderator === In order for a user to become a moderator, they must be a well established, friendly, and responsible rollbacker with a minimum of 1,000 edits. === Forum Administrator === Currently, the [[Special:WikiForum|forums]] are disabled due to a security risk, but they will be reopened as soon as the problem is solved. === Rollbacker === In order for a user to become an rollbacker, they must be a well established, responsible, friendly, and active user with a minimum of 300 edits. A user is more likely to become a rollbacker if they have consistently reverted vandalism throughout their time on the wiki. == Other user groups == === Abusefilter editor === In order for a user to become an abusefilter editor, they must be a well established, responsible, friendly, and active user, with a minimum of 500 edits who has shown they that understand the proper syntax and regex of the [[Special:AbuseFilter|AbuseFilter]]. === Autopatroll === In order for a user to become an autopatroller, they must have been a well established, responsible, friendly, and active user, with a minimum of 400 edits. === Bot === In order for a user to become a bot, they must list the following information in their request (which should be made by the bot operator, not the bot account): * The username of the bot * If it is semi or fully automated * The ''exact'' scope and purpose of the bot * What software it uses, or how it acts as a bot If a user would like to apply for a temporary bot flag on one of their accounts, they may contact a bureaucrat on their talk page, following the process as listed above. === Confirmed === There is no formal way to request promotion to the [[Project:Staff#Confirmed|confirmed]] user group. The two most common reasons somebody becomes confirmed is if they directly ask a bureaucrat for it and they oblige, or if an already (auto)confirmed user makes a secondary account and doesn't want to wait the four days to become autoconfirmed. == Demotion == A user may be demoted or removed from a user group if they have shown to be inactive for 60 or more days, have abused their rights, have broken the wiki rules, or have done something similar. A user may demote themselves at any time, but they should leave a notice at the [[GDW:CN|community noticeboard]] when they retire. == Request user rights == Visit [[Project:Requests for user rights|this page]] if you would like to request user rights. 4d63319157e33d778419bffbfbec8b00609e319e GDW:CN 0 178 493 2023-03-09T02:46:15Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Community noticeboard]] wikitext text/x-wiki #REDIRECT [[Project:Community noticeboard]] 0e319714ae839055f7342ff921ed116cc9f073bd 494 493 2023-03-09T02:46:23Z BlindCartographer 2 Protected "[[GDW:CN]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Community noticeboard]] 0e319714ae839055f7342ff921ed116cc9f073bd MediaWiki:Edittools 8 179 496 2023-03-12T21:27:21Z BlindCartographer 2 Created page with "<!-- Text here will be shown below edit and upload forms. --> <div class="plainlinks" style="margin-top:5px;margin-bottom:5px;border-width:1px;border-style:solid;border-color:#aaa;padding:2px;font-size:x-small"> '''Shortcuts''': <charinsert>| [+] [[+]] {{+}} <nowiki><br></nowiki> <+> <<+>> – —</charinsert> · <charinsert><!--+--> <s>+</s></charinsert> · <charinsert>#REDIRECT&#32;[[+]]</charinsert> · <charinsert>[[Category:+]]</charinsert> · <charinsert><nowiki><y..." wikitext text/x-wiki <!-- Text here will be shown below edit and upload forms. --> <div class="plainlinks" style="margin-top:5px;margin-bottom:5px;border-width:1px;border-style:solid;border-color:#aaa;padding:2px;font-size:x-small"> '''Shortcuts''': <charinsert>| [+] [[+]] {{+}} <nowiki><br></nowiki> <+> <<+>> – —</charinsert> · <charinsert><!--+--> <s>+</s></charinsert> · <charinsert>#REDIRECT&#32;[[+]]</charinsert> · <charinsert>[[Category:+]]</charinsert> · <charinsert><nowiki><youtube>+</youtube></nowiki></charinsert> · <charinsert><ref>+</ref></charinsert> · <charinsert><big>+</big></charinsert> · <charinsert><small>+</small></charinsert> · <charinsert><references/></charinsert> · <charinsert><nowiki><div class="references-small">+</div></nowiki></charinsert> · <charinsert>‚+‘ „+“ ‘+’ “+”</charinsert> · <charinsert> # * ± + - ÷ × ≤ ≥ ≠ ≈ ~ ° / \ & § ¶ ¡ ¿ † ‡ ↔ → ← ↑ ↓ •</charinsert> · <charinsert>⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞</charinsert><br> '''Template codes'''<br> ''Doesn't show up in the template itself:'' <charinsert><includeonly>+</includeonly></charinsert><br> ''Isn't take to the page:'' <charinsert><noinclude>+</noinclude></charinsert><br> ''The only thing taken to the page:'' <charinsert><onlyinclude>+</onlyinclude></charinsert><br> af04fa4f75f5d8bf6f96b063ec9d340aa57e5adb 498 496 2023-03-12T21:29:26Z BlindCartographer 2 wikitext text/x-wiki <!-- Text here will be shown below edit and upload forms. --> <div class="plainlinks" style="margin-top:5px;margin-bottom:5px;border-width:1px;border-style:solid;border-color:#aaa;padding:2px;font-size:x-small"> '''Shortcuts''': <charinsert>| [+] [[+]] {{+}} <nowiki><br></nowiki> <+> <<+>> – —</charinsert> · <charinsert><!--+--> <s>+</s></charinsert> · <charinsert>#REDIRECT&#32;[[+]]</charinsert> · <charinsert>[[Category:+]]</charinsert> · <charinsert><ref>+</ref></charinsert> · <charinsert><big>+</big></charinsert> · <charinsert><small>+</small></charinsert> · <charinsert><references/></charinsert> · <charinsert><nowiki><div class="references-small">+</div></nowiki></charinsert> · <charinsert>‚+‘ „+“ ‘+’ “+”</charinsert> · <charinsert> # * ± + - ÷ × ≤ ≥ ≠ ≈ ~ ° / \ & § ¶ ¡ ¿ † ‡ ↔ → ← ↑ ↓ •</charinsert> · <charinsert>⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞</charinsert><br> '''Template codes'''<br> ''Doesn't show up in the template itself:'' <charinsert><includeonly>+</includeonly></charinsert><br> ''Isn't taken to the page:'' <charinsert><noinclude>+</noinclude></charinsert><br> ''The only thing taken to the page:'' <charinsert><onlyinclude>+</onlyinclude></charinsert><br> a2ae1bfb735607971e2ff72aa9c27dd2dd444f8d Game Development Wiki:Editing manual/Voting guide 4 180 499 2023-03-12T21:47:24Z BlindCartographer 2 Created page with "{{Policy page}} Here on the [[GDW:ABT|{{SITENAME}}]], we will often hold voting processes concerning a variety of topics, mostly either requests or changes to the wiki. This article details how to properly participate in wiki votes. == General Guidelines == # Follow our [[GDW:P|policies]]. # You only vote once on any given election. # Treat all users with courtesy. # Vote seriously and with the wiki in mind. # Do not use an alternative account to make an additional vot..." wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|{{SITENAME}}]], we will often hold voting processes concerning a variety of topics, mostly either requests or changes to the wiki. This article details how to properly participate in wiki votes. == General Guidelines == # Follow our [[GDW:P|policies]]. # You only vote once on any given election. # Treat all users with courtesy. # Vote seriously and with the wiki in mind. # Do not use an alternative account to make an additional vote. # Do not attempt to forcibly sway another users vote or opinion and do not edit others votes. == For Voters == === Voting === In the designated voting section for what kind of vote you want to give (support, neutral, oppose), you should use the following methods to vote: === Asking Questions === == For Staff == 7b075d2796bdf7e450fad83eca2c92cf9366d918 500 499 2023-03-12T21:47:38Z BlindCartographer 2 Protected "[[Game Development Wiki:Editing manual/Voting guide]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} Here on the [[GDW:ABT|{{SITENAME}}]], we will often hold voting processes concerning a variety of topics, mostly either requests or changes to the wiki. This article details how to properly participate in wiki votes. == General Guidelines == # Follow our [[GDW:P|policies]]. # You only vote once on any given election. # Treat all users with courtesy. # Vote seriously and with the wiki in mind. # Do not use an alternative account to make an additional vote. # Do not attempt to forcibly sway another users vote or opinion and do not edit others votes. == For Voters == === Voting === In the designated voting section for what kind of vote you want to give (support, neutral, oppose), you should use the following methods to vote: === Asking Questions === == For Staff == 7b075d2796bdf7e450fad83eca2c92cf9366d918 Game Development Wiki:Requests for user rights/boilerplate 4 181 503 2023-03-12T22:23:15Z BlindCartographer 2 Created page with "== {{{user}}}'s Request for the {{{rights}}} == <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === </div>" wikitext text/x-wiki == {{{user}}}'s Request for the {{{rights}}} == <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === </div> 0440a32e06a605b1d63523404702652463cccadc 504 503 2023-03-12T22:23:33Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for user rights/boilerplate]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki == {{{user}}}'s Request for the {{{rights}}} == <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === </div> 0440a32e06a605b1d63523404702652463cccadc 505 504 2023-03-12T22:24:35Z BlindCartographer 2 wikitext text/x-wiki == {{{user}}}'s Request for {{{rights}}} == <div class="boilerplate metadata discussion-archived" style="background-color: #F2F4FC; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #aaa"> User: [[User:{{{user}}}|{{{user}}}]] === Reason(s) for request === {{{reason}}} === Additional comments given by user (if any) === {{{comments|}}} === Questions for requester === === Comments by other users === === Support === === Neutral === === Oppose === </div> d4cf1a337b7c513fe0efb58edbbab34caf5085e9 Game Development Wiki:Requests for user rights/preload 4 182 506 2023-03-12T22:24:40Z BlindCartographer 2 Created page with "__NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for user rights/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting to be promoted to a user group. Please be thorough in this section and be sure to give any reasons as to why it would be useful. --> |rights= <!-- The name of the user group you want added --> |comments= <!-- Replace this secti..." wikitext text/x-wiki __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for user rights/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting to be promoted to a user group. Please be thorough in this section and be sure to give any reasons as to why it would be useful. --> |rights= <!-- The name of the user group you want added --> |comments= <!-- Replace this section with any additional comments you have for us. --> }} ac6692bf3a2a51f897348b54ee0a92c2d5b62737 507 506 2023-03-12T22:24:52Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for user rights/preload]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for user rights/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting to be promoted to a user group. Please be thorough in this section and be sure to give any reasons as to why it would be useful. --> |rights= <!-- The name of the user group you want added --> |comments= <!-- Replace this section with any additional comments you have for us. --> }} ac6692bf3a2a51f897348b54ee0a92c2d5b62737 509 507 2023-03-12T22:27:21Z BlindCartographer 2 wikitext text/x-wiki __NOTOC__ {{<includeonly>SUBST:</includeonly>:Project:Requests for user rights/boilerplate |user={{<includeonly>SUBST:</includeonly>REVISIONUSER}} <!-- Do not edit this line --> |reason= <!-- Replace this section with the reason you are requesting to be promoted to a user group. Please be thorough in this section and be sure to give any reasons as to why it would be useful for the wiki and any other experience you have. --> |rights= <!-- The name of the user group you want added to --> |comments= <!-- Replace this section with any additional comments you have for us. --> }} da078586401da47be7ad4c7f284a5d1734091d89 Game Development Wiki:Requests for undeletion 4 183 512 2023-03-12T22:33:35Z BlindCartographer 2 Created page with "{{/header}}" wikitext text/x-wiki {{/header}} ec2273490688a6ecc2324834b3acba6cd0497c48 Game Development Wiki:Policy/Deletion policy 4 132 514 364 2023-03-12T22:39:05Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} [[File:Ambox warning.png|50px|right|link=]] When a page is not needed, doesn't fit the goal of the wiki, or is was created in bad-faith, it may be '''deleted'''. If a page was deleted, it had a good reason to be deleted. == Why delete a page? == If a page is deleted, it may have had several reasons why it was deleted. Some reasons may be but are not limited to: *Vandalism and/or spam. *Unnecessarily bringing back a deleted page. *Off-topic or unfitting. *Duplicate of another page. *Heavily violates the [[GDW:EM|editing manual]]. *Violates any of the [[GDW:P|policies]]. Make sure that before deleting any page, you check what links there and the history of the page. == Who can delete a page? == Only users who have [[Project:Moderation|moderator]] or [[Project:Administrators|administrator]] rights can delete or restore a page, but any user can mark a page for deletion with the {{Tlx|Delete}} or {{Tlx|Speedy delete}} template. == Restoring a page == If an administrator or moderator believes there has been an error in the deletion of a page, they may choose to restore it. A user may also visit [[Project:Requests for undeletion|here]] and request a page be restored. == Other policies == * [[Project:Policy|Main policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] 807ba0530c64b8a5f1be6135da3455e9d8493b45 Game Development Wiki:Requests for undeletion/header 4 184 515 2023-03-12T22:43:03Z BlindCartographer 2 Created page with "{{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon restore.svg|34px|link=]] Requests for undeletion</span> ---- |text=On this page, users may request that an article or page be restored after deletion. Before requesting undeletion read [[Project:Policy/Deletion policy|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allowed to vote once in a given request. * The page must h..." wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon restore.svg|34px|link=]] Requests for undeletion</span> ---- |text=On this page, users may request that an article or page be restored after deletion. Before requesting undeletion read [[Project:Policy/Deletion policy|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allowed to vote once in a given request. * The page must have been deleted within the last 30 days. * After leaving a request, please notify the community on the [[GDW:CN|community noitceboard]] that you have made a new request. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user undeletion preload = Project:Requests for undeletion/preload buttonlabel = Add request </inputbox> </div> }} a3d489e50fa4be633684bc96948cabff4b50ed34 516 515 2023-03-12T22:43:30Z BlindCartographer 2 Protected "[[Game Development Wiki:Requests for undeletion/header]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon restore.svg|34px|link=]] Requests for undeletion</span> ---- |text=On this page, users may request that an article or page be restored after deletion. Before requesting undeletion read [[Project:Policy/Deletion policy|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * You are only allowed to vote once in a given request. * The page must have been deleted within the last 30 days. * After leaving a request, please notify the community on the [[GDW:CN|community noitceboard]] that you have made a new request. * Read [[Game_Development_Wiki:Editing_manual/Voting_guide|the voting guide]] if you have not, as your vote will have to follow the guidelines, or else it will be removed. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user undeletion preload = Project:Requests for undeletion/preload buttonlabel = Add request </inputbox> </div> }} a3d489e50fa4be633684bc96948cabff4b50ed34 Template:Translation needed 10 185 517 2023-03-12T22:55:08Z BlindCartographer 2 Created page with "{{Ambox | type = content | image = [[File:Ambox globe content.svg|45px|link=]] | text = <center>'''This article contains content that requires an english translation.'''</center> This article contains information or content that is in another language and requires an english translation. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this article] in order to provide an english translation, but do not feel the need to remove the information in another language..." wikitext text/x-wiki {{Ambox | type = content | image = [[File:Ambox globe content.svg|45px|link=]] | text = <center>'''This article contains content that requires an english translation.'''</center> This article contains information or content that is in another language and requires an english translation. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this article] in order to provide an english translation, but do not feel the need to remove the information in another language. }} <includeonly>[[Category:Candidates for cleanup]]</includeonly> <noinclude>{{Documentation}}</noinclude> 8ccee69275d24c176021e26c8033ec07117f6fb1 User:BlindCartographer/sandbox 2 71 520 220 2023-03-12T23:26:59Z BlindCartographer 2 wikitext text/x-wiki {{User sandbox}} d3c6c3118f4de6acb123f1044a362fecdbac12c6 Category:User sandboxes 14 186 521 2023-03-12T23:27:18Z BlindCartographer 2 Created page with "The list of user sandboxes on the wiki." wikitext text/x-wiki The list of user sandboxes on the wiki. b6dd2746185b100665b141d3c882aebc57e4b88b Template:Shortcut 10 190 525 2023-03-19T16:51:24Z BlindCartographer 2 Created page with "<includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 82cd3504cdb8a8e29aa449db737a5a5f59ae8343 526 525 2023-03-19T16:51:38Z BlindCartographer 2 Protected "[[Template:Shortcut]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 82cd3504cdb8a8e29aa449db737a5a5f59ae8343 528 526 2023-03-19T17:07:25Z BlindCartographer 2 wikitext text/x-wiki {| style="margin: 5px; float: right; background-color: #F8F9FA; border: 1px solid #AAAAAA; padding: 2px; width: 6%;" | style="text-align: center;"|<u><small>Shortcuts</small></u> |- valign="middle" | style="text-align: center;"|{{{1}}} |} <noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> f8e2ae765c32bab222c27a97bb8250d1539cf5aa Module:Redirect 828 191 529 2023-03-19T17:11:27Z BlindCartographer 2 Created page with "-- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a mw.title object, using pcall to avoid generating script errors if we -- are over the expensive function count limit (among other possible causes). local function getTitle(...) local success, titleObj = pcall(mw.title.new, ...) if success then return titleObj else return nil end end -- Gets the name of a page that a redirect leads to, or nil if it isn't a -- redi..." Scribunto text/plain -- This module provides functions for getting the target of a redirect page. local p = {} -- Gets a mw.title object, using pcall to avoid generating script errors if we -- are over the expensive function count limit (among other possible causes). local function getTitle(...) local success, titleObj = pcall(mw.title.new, ...) if success then return titleObj else return nil end end -- Gets the name of a page that a redirect leads to, or nil if it isn't a -- redirect. function p.getTargetFromText(text) local target = string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)%]%]" ) or string.match( text, "^%s*#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*:?%s*%[%[([^%[%]|]-)|[^%[%]]-%]%]" ) return target and mw.uri.decode(target, 'PATH') end -- Gets the target of a redirect. If the page specified is not a redirect, -- returns nil. function p.getTarget(page, fulltext) -- Get the title object. Both page names and title objects are allowed -- as input. local titleObj if type(page) == 'string' or type(page) == 'number' then titleObj = getTitle(page) elseif type(page) == 'table' and type(page.getContent) == 'function' then titleObj = page else error(string.format( "bad argument #1 to 'getTarget'" .. " (string, number, or title object expected, got %s)", type(page) ), 2) end if not titleObj then return nil end local targetTitle = titleObj.redirectTarget if targetTitle then if fulltext then return targetTitle.fullText else return targetTitle.prefixedText end else return nil end end --[[ -- Given a single page name determines what page it redirects to and returns the -- target page name, or the passed page name when not a redirect. The passed -- page name can be given as plain text or as a page link. -- -- Returns page name as plain text, or when the bracket parameter is given, as a -- page link. Returns an error message when page does not exist or the redirect -- target cannot be determined for some reason. --]] function p.luaMain(rname, bracket, fulltext) if type(rname) ~= "string" or not rname:find("%S") then return nil end bracket = bracket and "[[%s]]" or "%s" rname = rname:match("%[%[(.+)%]%]") or rname local target = p.getTarget(rname, fulltext) local ret = target or rname ret = getTitle(ret) if ret then if fulltext then ret = ret.fullText else ret = ret.prefixedText end return bracket:format(ret) else return nil end end -- Provides access to the luaMain function from wikitext. function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) return p.luaMain(args[1], args.bracket, args.fulltext) or '' end -- Returns true if the specified page is a redirect, and false otherwise. function p.luaIsRedirect(page) local titleObj = getTitle(page) if not titleObj then return false end if titleObj.isRedirect then return true else return false end end -- Provides access to the luaIsRedirect function from wikitext, returning 'yes' -- if the specified page is a redirect, and the blank string otherwise. function p.isRedirect(frame) local args = require('Module:Arguments').getArgs(frame, {frameOnly = true}) if p.luaIsRedirect(args[1]) then return 'yes' else return '' end end return p a224c45940343d66f49a78b0a39b2045e2c45d20 Template:No redirect 10 192 530 2023-03-19T17:13:26Z BlindCartographer 2 Created page with "{{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}} | <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span> | {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}} }}<noinclude> {{Documentation}} </noinclude>" wikitext text/x-wiki {{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}} | <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span> | {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}} }}<noinclude> {{Documentation}} </noinclude> d7583fd4c1a163bd421188515e21b594c89b005d 531 530 2023-03-19T17:13:38Z BlindCartographer 2 Protected "[[Template:No redirect]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{safesubst:<noinclude/>#if: {{safesubst:<noinclude/>#invoke:Redirect|isRedirect|{{{1}}}}} | <span class="plainlinks">[{{safesubst:<noinclude/>fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span> | {{safesubst:<noinclude/>#if:{{{2|}}}|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{safesubst:<noinclude/>FULLPAGENAME:{{{1}}}}}]]}} }}<noinclude> {{Documentation}} </noinclude> d7583fd4c1a163bd421188515e21b594c89b005d Game Development Wiki:Policy 4 44 532 353 2023-03-19T17:16:46Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} {{Shortcut |{{No redirect|GDW:P|GDW:P}} }} There are certain '''rules''' and '''policies''' that every user, both registered and non-registered, must follow. Noncompliance with the rules will result in the appropriate actions being taken by [[GDW:Staff|wiki staff]], which may be as minor as an edit reversion or as major as an indefinite ban. If a rule seems unclear, please ask a current member of the [[Project:Staff|wiki staff]] for clarification. Rules concerning edit/page quality can be found [[Project:Editing manual|here]]. == General Rules == ===Rule Zero=== Nobody is above the rules. All users, whether staff or not, are subject to punishment if necessary. There should be absolutely no favoritism, and attempting to find loopholes in the rules will not let you avoid punishment. ===Vandalism=== Vandalism or any sort of disruptive edits is strictly prohibited. The deliberate act of removing or destroying content on the wiki as well as purposefully spreading false or nonsensical information will not be tolerated. This applies to all articles and images. Acts of vandalism are always done maliciously; making an unhelpful edit by mistake cannot be considered vandalism. Vandalistic edits will be reverted and result in a warning and a block following afterwards if it continues. ===Wiki Content=== The wiki is primarily meant for the documentation of game development and anything related to it. Incredibly short pages will be deleted after 24 hours if it does not eventually get over 1,200 bytes. Rule breaking content will be removed. The first few offense will result in a warning. Further offenses or multiple offenses done in a short period of time will be counted as vandalism, resulting in either a lengthy or indefinite block. Adding explicitly NSFW or NSFL content will result in an immediate block. The wiki does not cover individual games. ===Copyright Violations=== Adding articles or files about websites that violate copyright or violating copyright in any way is unacceptable. Any and all forms of copyright violation will be removed. Any form of intentional copyright violations will result in an indefinite block. ===Page Creation=== You can create any page you want, as long as it is relevant to the wikis overarching topic. Do not create irrelevant or spam pages, as that will result in immediate action. Make sure all pages at least mildly follow the [[Project:Editing manual|Editing manual]]. Please make a page on your [[Special:MyPage/Sandbox|Sandbox]] page before making it an article. Rule breaking content will be removed. Varying amounts of warnings and blocks may be handed out depending on the situation. ===Sockpuppetry=== The general rule is one editor, one account. Do not use multiple accounts to mislead, deceive, vandalize or disrupt; to create the illusion of greater support for a position; to stir up controversy; or to circumvent a block, ban, or sanction. Do not ask your family or friends to create accounts to support you. Do not revive old unused accounts and use them as different users, or use another person's account. Normal alts are fine, but don't use them maliciously. Upon being found out, an indefinite block will be put in place for the sockpuppet account, and the main account will have its block lengthened greatly. ===Spamming Edits/Edit Farming=== Do not spam edits. This behavior is disruptive and clutters an article's history. This can range from writing the same thing over and over across an article to adding several unnecessary links to making several edits that consist of adding something then quickly undoing it. Creating pages over and over is also considered spam. Spamming in an article is generally seen as vandalism. Any form of spam is forbidden. Edits will be reverted. Offending users will be warned and may be blocked if they continue. ===Edit Wars=== An edit war is where two users undo each of their edits in one page due to a disagreement between each other. If you are in a situation where you are edit warring with someone, please message them on their message wall. Explain your reasoning as to why your edit should be published with research to back-up your reasoning. If the edit war continues after discussing, please contact an admin or content moderators. If you are the user with incorrect information, or your edits were not published, please do not harass or get frustrated with the people that were involved. Pages subject to edit warring will be temporarily locked, and users will be warned. Users continuing afterwards may be blocked. ===Behavior & Civility=== All contributors are expected to act civil and courteous towards other users. If there is a dispute, try and work it out peacefully with the other user, or just back away. Trolling is also not allowed, and will result in a punishment if it does not stop. Offending users will be warned. Users continuing after the warning(s) will be blocked. ===Spamming=== Do not spam. This behavior is annoying and can clutter a discussion. This can range from copypastas to needlessly long breaks to writing in a very distracting font. Making the same or very similar comments multiple times is also considered spam. Encouraging users to spam is also forbidden. Offending users will be warned. Users continuing after the warning will be blocked. ===Usernames=== Any username that is explicit, rude, inappropriate, derogatory, or in any way inappropriate will result in the account under the inappropriate username being permanently blocked. Usernames that advertise groups are also not allowed, nor are usernames that impersonate another user, a group, or well-known famous person. The user is allowed to make another account under a different and more appropriate name, however. == Blocking == <small>A more in-depth blocking policy can be found [[Project:Policy/Blocking policy|here]]</small> <br> Blocks can be assigned to users by [[Project:Administrators|administrators]] when the situation calls for it. Certain blocks may mildly deviate from the general length for any given reason, albeit rarely. The third block given to any user for any reason will be '''indefinite'''. === Appeals === If you believe your block was unfair, a mistake, or generally contestable, you may do the following: *If you still have access to edit your talk page, you may leave an unblock request on there to be reviewed by an administrator. You can do so by adding <code><nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki></code> and replacing (insert reason here) with your reason. Only the blocked user can appeal their block, no third party may do so for another user. == Other Policies == * [[Project:Policy/Blocking policy|Blocking policy]] * [[Project:Policy/Protection policy|Protection policy]] * [[Project:Policy/Deletion policy|Deletion policy]] * [[Project:Policy/Merge policy|Merge policy]] [[Category:{{SITENAME}}]] 32f01e186b472c033db5ad2249578a0233494698 Game Development Wiki:Frequently Asked Questions 4 193 533 2023-03-19T17:33:06Z BlindCartographer 2 Created page with "<tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === This is the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've do..." wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === This is the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. </tab> <tab name="Editing"> </tab> <tab name="Staff"> </tab> <tab name="Other"> </tab> </tabs> [[Category:{{SITENAME}}]] 28f7d8ac7a18eb51da4429235b7d3215d128e1f7 538 533 2023-03-19T19:12:52Z BlindCartographer 2 wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === This is the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. You don't need an account to edit, however anonymous editing will have your username be displayed as your [[wikipedia:IP address|IP address]]. === What can I expect to find here? === The main type of content we have are articles that document anything and everything related to game development, and [[Project:Tutorial articles|tutorial articles]] that offer comprehensive guides and advice for game development. === Can I add an article about my video game? === Unfortunately, we do not allow articles about individual games. However, if you own or are a member of an indie game development studio, you may add an article about your studio. === How old do I have to be to use this wiki? === You must be a minimum of 13 years old in order to edit or use the wiki. If you are found to be underage, you will be banned. It should be noted that you don't need to be 13 or older to read the wiki, only interact with it.}} </tab> <tab name="Editing"> </tab> <tab name="Staff"> </tab> <tab name="Forums"> === Why are the forums disabled? === Unfortunately, the forums are temporarily disabled due to a security exploit bug. The forums will remain disabled until the bug has been fixed. </tab> <tab name="Other"> === I've been blocked! What do I do? === If you've been blocked on the wiki, it was probably for a good reason. However, if you would like to appeal your block, and believe it was unfair, a mistake, or otherwise unneeded, you may leave an unblock request on your talk page (assuming you still have access to it) to be reviewed by an administrator. You can do so by adding <nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki> and replacing (insert reason here) with your reason. For a more in-depth guide on block appeals, read [[Project:Policy/Blocking policy#Block Appeals|this]]. === Do you have any social media, chat platforms, or other methods of contact? === At the moment we do not have any social media accounts or dedicated chat platforms such as Discord. </tab> </tabs> [[Category:{{SITENAME}}]] 03a9e5c049e0839c238426883b65ecadfacb48fb 539 538 2023-03-19T19:13:13Z BlindCartographer 2 Protected "[[Game Development Wiki:Frequently Asked Questions]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === This is the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. You don't need an account to edit, however anonymous editing will have your username be displayed as your [[wikipedia:IP address|IP address]]. === What can I expect to find here? === The main type of content we have are articles that document anything and everything related to game development, and [[Project:Tutorial articles|tutorial articles]] that offer comprehensive guides and advice for game development. === Can I add an article about my video game? === Unfortunately, we do not allow articles about individual games. However, if you own or are a member of an indie game development studio, you may add an article about your studio. === How old do I have to be to use this wiki? === You must be a minimum of 13 years old in order to edit or use the wiki. If you are found to be underage, you will be banned. It should be noted that you don't need to be 13 or older to read the wiki, only interact with it.}} </tab> <tab name="Editing"> </tab> <tab name="Staff"> </tab> <tab name="Forums"> === Why are the forums disabled? === Unfortunately, the forums are temporarily disabled due to a security exploit bug. The forums will remain disabled until the bug has been fixed. </tab> <tab name="Other"> === I've been blocked! What do I do? === If you've been blocked on the wiki, it was probably for a good reason. However, if you would like to appeal your block, and believe it was unfair, a mistake, or otherwise unneeded, you may leave an unblock request on your talk page (assuming you still have access to it) to be reviewed by an administrator. You can do so by adding <nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki> and replacing (insert reason here) with your reason. For a more in-depth guide on block appeals, read [[Project:Policy/Blocking policy#Block Appeals|this]]. === Do you have any social media, chat platforms, or other methods of contact? === At the moment we do not have any social media accounts or dedicated chat platforms such as Discord. </tab> </tabs> [[Category:{{SITENAME}}]] 03a9e5c049e0839c238426883b65ecadfacb48fb 544 539 2023-03-19T20:07:42Z BlindCartographer 2 wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === This is the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. You don't need an account to edit, however anonymous editing will have your username be displayed as your [[wikipedia:IP address|IP address]]. === What can I expect to find here? === The main type of content we have are articles that document anything and everything related to game development, and [[Project:Tutorial articles|tutorial articles]] that offer comprehensive guides and advice for game development. === Can I add an article about my video game? === Unfortunately, we do not allow articles about individual games. However, if you own or are a member of an indie game development studio, you may add an article about your studio. === How old do I have to be to use this wiki? === You must be a minimum of 13 years old in order to edit or use the wiki. If you are found to be underage, you will be banned. It should be noted that you don't need to be 13 or older to read the wiki, only interact with it. </tab> <tab name="Editing"> </tab> <tab name="Staff"> </tab> <tab name="Forums"> === Why are the forums disabled? === Unfortunately, the forums are temporarily disabled due to a security exploit bug. The forums will remain disabled until the bug has been fixed. </tab> <tab name="Other"> === I've been blocked! What do I do? === If you've been blocked on the wiki, it was probably for a good reason. However, if you would like to appeal your block, and believe it was unfair, a mistake, or otherwise unneeded, you may leave an unblock request on your talk page (assuming you still have access to it) to be reviewed by an administrator. You can do so by adding <nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki> and replacing (insert reason here) with your reason. For a more in-depth guide on block appeals, read [[Project:Policy/Blocking policy#Block Appeals|this]]. === Do you have any social media, chat platforms, or other methods of contact? === At the moment we do not have any social media accounts or dedicated chat platforms such as Discord. === Do you have non-english versions of the wiki? === At the moment, the only version of the {{SITENAME}} is in english. </tab> </tabs> [[Category:{{SITENAME}}]] 7fbcfbe1d116651c03e9d3ffa41f05aa1282e31d 545 544 2023-03-19T20:24:21Z BlindCartographer 2 wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === This is the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. You don't need an account to edit, however anonymous editing will have your username be displayed as your [[wikipedia:IP address|IP address]]. === What can I expect to find here? === The main type of content we have are articles that document anything and everything related to game development, and [[Project:Tutorial articles|tutorial articles]] that offer comprehensive guides and advice for game development. === Can I add an article about my video game? === Unfortunately, we do not allow articles about individual games. However, if you own or are a member of an indie game development studio, you may add an article about your studio. === How old do I have to be to use this wiki? === You must be a minimum of 13 years old in order to edit or use the wiki. If you are found to be underage, you will be banned. It should be noted that you don't need to be 13 or older to read the wiki, only interact with it. </tab> <tab name="Editing"> === How do I start editing? === In order to edit a page, you can click the "Edit" or "Edit source" buttons in the top right corner next to the search bar in order to begin editing a page. Please read the [[GDW:EM|editing manual]] and [[GDW:P|policies]] before you begin editing. </tab> <tab name="Staff"> </tab> <tab name="Forums"> === Why are the forums disabled? === Unfortunately, the forums are temporarily disabled due to a security exploit bug. The forums will remain disabled until the bug has been fixed. </tab> <tab name="Other"> === I've been blocked! What do I do? === If you've been blocked on the wiki, it was probably for a good reason. However, if you would like to appeal your block, and believe it was unfair, a mistake, or otherwise unneeded, you may leave an unblock request on your talk page (assuming you still have access to it) to be reviewed by an administrator. You can do so by adding <nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki> and replacing (insert reason here) with your reason. For a more in-depth guide on block appeals, read [[Project:Policy/Blocking policy#Block Appeals|this]]. === Do you have any social media, chat platforms, or other methods of contact? === At the moment we do not have any social media accounts or dedicated chat platforms such as Discord. === Do you have non-english versions of the wiki? === At the moment, the only version of the {{SITENAME}} is in english. </tab> </tabs> [[Category:{{SITENAME}}]] c46ca1a8b5e9cb894a10ce2a928f303441e398d7 556 545 2023-03-19T23:27:14Z BlindCartographer 2 wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === Welcome to the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. You don't need an account to edit, however anonymous editing will have your username be displayed as your [[wikipedia:IP address|IP address]]. === What can I expect to find here? === The main type of content we have are articles that document anything and everything related to game development, and [[Project:Tutorial articles|tutorial articles]] that offer comprehensive guides and advice for game development. === Can I add an article about my video game? === Unfortunately, we do not allow articles about individual games. However, if you own or are a member of an indie game development studio, you may add an article about your studio. === How old do I have to be to use this wiki? === You must be a minimum of 13 years old in order to edit or use the wiki. If you are found to be underage, you will be banned. It should be noted that you don't need to be 13 or older to read the wiki, only interact with it. </tab> <tab name="Editing"> === How do I start editing? === In order to edit a page, you can click the "Edit" or "Edit source" buttons in the top right corner next to the search bar in order to begin editing a page. Please read the [[GDW:EM|editing manual]] and [[GDW:P|policies]] before you begin editing. === Can I create an article? === Sure! Anybody can. Just make sure you create it in your [[Special:MyPage/sandbox|user sandbox]] before posting it to the wiki. If it gets deleted, do not repost it. Instead, visit [[Project:Requests for undeletion|here]] instead. </tab> <tab name="Staff"> === Where can I find the wiki staff? === You can find the list of wiki staff [[Project:Staff|here]]. </tab> <tab name="Forums"> === Why are the forums disabled? === Unfortunately, the forums are temporarily disabled due to a security exploit bug. The forums will remain disabled until the bug has been fixed. </tab> <tab name="Other"> === I've been blocked! What do I do? === If you've been blocked on the wiki, it was probably for a good reason. However, if you would like to appeal your block, and believe it was unfair, a mistake, or otherwise unneeded, you may leave an unblock request on your talk page (assuming you still have access to it) to be reviewed by an administrator. You can do so by adding <nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki> and replacing (insert reason here) with your reason. For a more in-depth guide on block appeals, read [[Project:Policy/Blocking policy#Block Appeals|this]]. === Do you have any social media, chat platforms, or other methods of contact? === At the moment we do not have any social media accounts or dedicated chat platforms such as Discord. === Do you have non-english versions of the wiki? === At the moment, the only version of the {{SITENAME}} is in english. === I have found something that violates the copyright policy === If you have found content on the wiki that violates the CC BY-SA 4.0 license or the [[Project:Copyrights|wiki copyright policy]], please report it to a [[Project:Moderation|moderator]], [[Project:Administrators|administrator]], or a [[Project:Staff#Bureaucrat|bureaucrat]] on their talk page. Make sure to do so by using the {{Tlx|Copyright takedown}} template. </tab> </tabs> [[Category:{{SITENAME}}]] dea34fd66f7ff6b261707e10da158914e86e4cc9 GDW:FAQ 0 194 534 2023-03-19T17:33:45Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Frequently Asked Questions]] wikitext text/x-wiki #REDIRECT [[Project:Frequently Asked Questions]] dc919017a2d87f65f101ddf006bd7df7ab0051b2 535 534 2023-03-19T17:33:54Z BlindCartographer 2 Protected "[[GDW:FAQ]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Frequently Asked Questions]] dc919017a2d87f65f101ddf006bd7df7ab0051b2 MediaWiki:Sidebar 8 25 536 479 2023-03-19T17:34:57Z BlindCartographer 2 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** Special:CreatePage|Create a Page ** randompage-url|randompage ** helppage|help-mediawiki * Gamedev Wiki ** Game Development Wiki:Policy|Policies ** Game Development Wiki:Editing manual|Editing manual ** Special:WikiForum|Forums ** Special:AllPages|All pages ** Game Development Wiki:Staff|Wiki staff ** Project:Community noticeboard|Community noticeboard ** Project:Administrator Noticeboard|Administrator noticeboard ** Project:Community portal|Community portal ** Project:Frequently Asked Questions|FAQs * SEARCH * TOOLBOX * LANGUAGES 1371e1ebc5fe637627b3c75353bffe78378f9581 Tutorial:Installing Godot 3000 98 537 264 2023-03-19T17:48:02Z BlindCartographer 2 wikitext text/x-wiki {{Tutorial page|status=approved}} [[Godot]] is an open-source, lightweight, and cross-platform game engine that allows the user to create and develop 2D and 3D video games. This article is a guide on how to '''install Godot''' and the most recent release of it. This tutorial can also be used for updating Godot. == Downloading Godot == # Visit [https://godotengine.org/ godotengine.org]. # Go to [https://godotengine.org/download godotengine.org/download] and download the latest version. It should automatically navigate to the version for your Operating System. # Extract the .zip file and run Godot. It is self-contained and should not require and compiling. == Updating Godot == [[File:godotimport.png|200px|thumb|right|The import button on Godot]] # Follow the instructions above for [[Tutorial:Installing Godot#Downloading Godot|downloading Godot]]. # Do not delete any existing files or directories for any games you have developed on Godot. # Open Godot and click the "Import" button, and import the directory containing the files for your game(s) that were on the previous edition of Godot. == Notes == * Godot does not need to be compiled, only extracted from the .zip file. It can then be run directly afterwards. == See also == [[Category:Godot tutorials]] [[Category:Installation tutorials]] 826069b18527fc6af22d8615c02d75a243c5d21d MediaWiki:Newarticletext 8 69 540 162 2023-03-19T19:22:42Z BlindCartographer 2 wikitext text/x-wiki <div style="text-align: center; border: 2px solid green; padding: 10px; font-size: 125%;">[[File:Essay.png|45px|link=Special:MyPage/Sandbox]] Please make sure your page was created in your '''[[Special:MyPage/sandbox|sandbox]]''' page before doing so here. Thank you!</div> 144d7bc017862616167a3986a00e9bd38d1e6fb6 Template:User sandbox 10 72 541 384 2023-03-19T19:23:14Z BlindCartographer 2 wikitext text/x-wiki {{Ombox |text = <center>'''This is a sandbox page.'''</center> This page is a personal user sandbox, which means it is used by the respective owner to test and practice editing and formatting. It is not an article, but may be used to practice article creation. ---- <small>(If you want to visit your own sandbox, click [[Special:MyPage/sandbox|here]].)</small> |image = [[File:Sandbox.png|45px|link=Category:User sandboxes]] |imagelink = Category:User sandboxes }} <includeonly>[[Category:User sandboxes]]</includeonly> <noinclude>[[Category:User management templates]]</noinclude> 037e7b717eb9345bdc3dc9e7d7386f0d12485909 Category:Tutorials 14 195 542 2023-03-19T19:26:00Z BlindCartographer 2 Created page with "The comprehensive list of all [[Project:Tutorial articles|tutorial articles]] on the {{SITENAME}}." wikitext text/x-wiki The comprehensive list of all [[Project:Tutorial articles|tutorial articles]] on the {{SITENAME}}. fdb495b3cbd2d729980ef1e4a9752cee6932d576 Category:Approved tutorials 14 196 543 2023-03-19T19:27:11Z BlindCartographer 2 Created page with "The comprehensive list of all [[Project:Tutorial articles|tutorial articles]] on the Game Development Wiki." wikitext text/x-wiki The comprehensive list of all [[Project:Tutorial articles|tutorial articles]] on the Game Development Wiki. 77fc8c07dbddc79000144a7523afe390aa60f616 Template:MP-Main 10 38 546 77 2023-03-19T21:08:10Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |border=#2C670F |background=#F8FFF5 |header=<div style="font-size:180%; font-family: Righteous">'''Welcome to the Game Development Wiki!'''</div> |text=The '''Game Development Wiki''' (better known as the '''Gamedev wiki''') is a collaborative encyclopedia used to store and collect knowledge about the past, present, and future of game development. Even you can contribute to it. Before starting, please read the [[GDW:P|Rules]] and [[GDW:EM|Editing Manual]]. Thank you! *Have a question? Visit the [[Special:WikiForums|Forums]]! *Have something to report to the admins? Visit the [[Project:Administrator Noticeboard|Administrator Noticeboard]]. *Want to see who the administrators are? Find out [[project:Administrators|here]]. *Looking for something to do? See what's happening down at the [[Project:Community portal|Community portal]]. *Want to see what's happened at the wiki recently? See the '''[[Special:RecentChanges|RecentChanges]]''' page. ''We are NOT a source of advertisement, promotion, or anything of the sort. We are a wiki, a place to store information. We do not accept low-quality articles or posts that exist solely to advertise.'' <div style="text-align:right;">[[Special:CreatePage|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Create an article</span>]] [[Special:Random|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Random page</span>]]</div> }} f664d1894da3b4192fcf1823df46a195957868aa Template:Copyright takedown 10 197 547 2023-03-19T22:52:27Z BlindCartographer 2 Created page with "{{Ombox |type=delete |image=[[File:Copyright red.svg|left|50px|link=Project:Copyrights]] |text=<center>'''[[User:{{REVISIONUSER}}|{{REVISIONUSER}}]] has found a copyright violation.'''</center> {{REVISIONUSER}} believes that '''{{{1|violating content}}}''' is in violation of the wiki [[Project:Copyrights|copyright policy]] and/or British copyright law. They are filing this takedown notice for the following reason(s): {{{2|Insert reason for takedown here.}}} }} <noinclu..." wikitext text/x-wiki {{Ombox |type=delete |image=[[File:Copyright red.svg|left|50px|link=Project:Copyrights]] |text=<center>'''[[User:{{REVISIONUSER}}|{{REVISIONUSER}}]] has found a copyright violation.'''</center> {{REVISIONUSER}} believes that '''{{{1|violating content}}}''' is in violation of the wiki [[Project:Copyrights|copyright policy]] and/or British copyright law. They are filing this takedown notice for the following reason(s): {{{2|Insert reason for takedown here.}}} }} <noinclude> {{Documentation}} [[Category:Templates]] [[Category:User talk templates]] </noinclude> 81a942cbd5601189bc85276b30435834b42c1a43 548 547 2023-03-19T22:54:10Z BlindCartographer 2 Protected "[[Template:Copyright takedown]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Ombox |type=delete |image=[[File:Copyright red.svg|left|50px|link=Project:Copyrights]] |text=<center>'''[[User:{{REVISIONUSER}}|{{REVISIONUSER}}]] has found a copyright violation.'''</center> {{REVISIONUSER}} believes that '''{{{1|violating content}}}''' is in violation of the wiki [[Project:Copyrights|copyright policy]] and/or British copyright law. They are filing this takedown notice for the following reason(s): {{{2|Insert reason for takedown here.}}} }} <noinclude> {{Documentation}} [[Category:Templates]] [[Category:User talk templates]] </noinclude> 81a942cbd5601189bc85276b30435834b42c1a43 Template:Copyright page 10 198 549 2023-03-19T23:02:52Z BlindCartographer 2 Created page with "{{Ombox |image=[[File:Ambox copyright blue.svg|45px|link=Project:Copyrights]] |text=<center>'''This {{{ns|page}}} concerns legal or [[Project:Copyrights|wiki copyright policies.]]'''</center> The content of this {{{ns|page}}} details and documents information relating to copyright laws and policies that are used on the {{SITENAME}}. Changes to the information pertaining to copyright proceedings should not be changed unless the policy or law changes. }} <noinclude>Cate..." wikitext text/x-wiki {{Ombox |image=[[File:Ambox copyright blue.svg|45px|link=Project:Copyrights]] |text=<center>'''This {{{ns|page}}} concerns legal or [[Project:Copyrights|wiki copyright policies.]]'''</center> The content of this {{{ns|page}}} details and documents information relating to copyright laws and policies that are used on the {{SITENAME}}. Changes to the information pertaining to copyright proceedings should not be changed unless the policy or law changes. }} <noinclude>[[Category:Templates]]</noinclude> d540e47ab854c976976a673b3c83c636bff23597 550 549 2023-03-19T23:03:09Z BlindCartographer 2 Protected "[[Template:Copyright page]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Ombox |image=[[File:Ambox copyright blue.svg|45px|link=Project:Copyrights]] |text=<center>'''This {{{ns|page}}} concerns legal or [[Project:Copyrights|wiki copyright policies.]]'''</center> The content of this {{{ns|page}}} details and documents information relating to copyright laws and policies that are used on the {{SITENAME}}. Changes to the information pertaining to copyright proceedings should not be changed unless the policy or law changes. }} <noinclude>[[Category:Templates]]</noinclude> d540e47ab854c976976a673b3c83c636bff23597 Game Development Wiki:Copyrights 4 123 551 333 2023-03-19T23:04:06Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} {{Copyright page}} Content on the [[Main Page|Game Development Wiki]] is licensed under the Creative Commons Attribution-ShareAlike 4.0 License unless otherwise noted. Files must abide by British copyright law. Fair use as such does not exist in the British system, it is instead replaced by a similar but stricter fair dealing system. f151a0a88988040aa1dee3b1dc82587bf278e659 552 551 2023-03-19T23:04:28Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} Content on the [[Main Page|Game Development Wiki]] is licensed under the Creative Commons Attribution-ShareAlike 4.0 License unless otherwise noted. Files must abide by British copyright law. Fair use as such does not exist in the British system, it is instead replaced by a similar but stricter fair dealing system. a75ccf2d4a2c286a459762a5c2f4fe61ffcca589 Template:Copyright takedown/doc 10 199 553 2023-03-19T23:19:14Z BlindCartographer 2 Created page with "{{Copyright page|ns=template}} The '''copyright takedown''' template is to be used on [[Project:Staff|staff]] talk pages in order to file a copyright complaint or takedown. == Usage == In order to properly use the template, insert the following: <code><nowiki>{{Copyright takedown|(Insert violating content)|(insert reason) ~~~~}}</nowiki></code> An example is used below: <br> <code><nowiki>{{Copyright takedown|[[:File:Site-Icon.png|Site-Icon.png]]|This file is in viol..." wikitext text/x-wiki {{Copyright page|ns=template}} The '''copyright takedown''' template is to be used on [[Project:Staff|staff]] talk pages in order to file a copyright complaint or takedown. == Usage == In order to properly use the template, insert the following: <code><nowiki>{{Copyright takedown|(Insert violating content)|(insert reason) ~~~~}}</nowiki></code> An example is used below: <br> <code><nowiki>{{Copyright takedown|[[:File:Site-Icon.png|Site-Icon.png]]|This file is in violation of copyright law because the copyright holder did not give permission for it do be redistributed. ~~~~}}</nowiki></code> Which results in the following: {{Copyright takedown|[[:File:Site-Icon.png|Site-Icon.png]]|This file is in violation of copyright law because the copyright holder did not give permission for it do be redistributed. [[User:BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]] · [[Special:Contributions/BlindCartographer|contribs]] · [[Special:Log/block/BlindCartographer|blocks]] · [[Special:Log/protect/BlindCartographer|protections]] · [[Special:Log/delete/BlindCartographer|deletions]] · [[Special:Log/move/BlindCartographer|page moves]] · [[Special:Log/rights/BlindCartographer|rights]]) 23:18, 19 March 2023 (UTC)}} 490c7747fcc123318d79c0d64670ce80bbd05137 554 553 2023-03-19T23:19:29Z BlindCartographer 2 Protected "[[Template:Copyright takedown/doc]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Copyright page|ns=template}} The '''copyright takedown''' template is to be used on [[Project:Staff|staff]] talk pages in order to file a copyright complaint or takedown. == Usage == In order to properly use the template, insert the following: <code><nowiki>{{Copyright takedown|(Insert violating content)|(insert reason) ~~~~}}</nowiki></code> An example is used below: <br> <code><nowiki>{{Copyright takedown|[[:File:Site-Icon.png|Site-Icon.png]]|This file is in violation of copyright law because the copyright holder did not give permission for it do be redistributed. ~~~~}}</nowiki></code> Which results in the following: {{Copyright takedown|[[:File:Site-Icon.png|Site-Icon.png]]|This file is in violation of copyright law because the copyright holder did not give permission for it do be redistributed. [[User:BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]] · [[Special:Contributions/BlindCartographer|contribs]] · [[Special:Log/block/BlindCartographer|blocks]] · [[Special:Log/protect/BlindCartographer|protections]] · [[Special:Log/delete/BlindCartographer|deletions]] · [[Special:Log/move/BlindCartographer|page moves]] · [[Special:Log/rights/BlindCartographer|rights]]) 23:18, 19 March 2023 (UTC)}} 490c7747fcc123318d79c0d64670ce80bbd05137 Game Development Wiki:Requests for undeletion/header 4 184 555 516 2023-03-19T23:25:23Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |header=<span style="font-size: 24px; font-weight: bold;">[[File:OOjs UI icon restore.svg|34px|link=]] Requests for undeletion</span> ---- |text=On this page, users may request that an article or page be restored after deletion. Before requesting undeletion read [[Project:Policy/Deletion policy|this]]. Remember to sign (using four tildes: <nowiki>~~~~</nowiki>) when posting. <br> <br> Notes: * User votes do not determine if a page gets restored, but may possibly sway the opinion of the staff member restoring the page. * The page must have been deleted within the last 30 days. * After leaving a request, please notify the community on the [[GDW:CN|community noitceboard]] that you have made a new request. ''To add your request, click the "Add request" button below.'' <div style="text-align: center;"> ''To add your request, click the "Add request" button below.'' <inputbox> type = commenttitle hidden = true break = no page = Project:Requests for user undeletion preload = Project:Requests for undeletion/preload buttonlabel = Add request </inputbox> </div> }} dc5cd42669cd599fb7e7fa6cf502f7383f36a216 Module:Message box/imbox.css 828 200 557 2023-03-19T23:36:50Z BlindCartographer 2 Created page with "/* {{pp|small=y}} */ .imbox { margin: 4px 0; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* For imboxes inside imbox-text cells. */ .imbox .mbox-text .imbox { margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ /* TODO: Still needed? */ display: block; /* Fix for webkit to force 100% width. */ } .imbox-speedy { border: 3px solid #b32424; /* Red */ background-color..." sanitized-css text/css /* {{pp|small=y}} */ .imbox { margin: 4px 0; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } /* For imboxes inside imbox-text cells. */ .imbox .mbox-text .imbox { margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ /* TODO: Still needed? */ display: block; /* Fix for webkit to force 100% width. */ } .imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .imbox-delete { border: 3px solid #b32424; /* Red */ } .imbox-content { border: 3px solid #f28500; /* Orange */ } .imbox-style { border: 3px solid #fc3; /* Yellow */ } .imbox-move { border: 3px solid #9932cc; /* Purple */ } .imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } .imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } .imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } .imbox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .imbox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .imbox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .imbox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .imbox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .imbox { margin: 4px 10%; } } 1e82a3c342695a9b4fbdcc4e5e0930d4845a23d4 Template:Imbox 10 201 558 2023-03-19T23:37:28Z BlindCartographer 2 Created page with "{{#invoke:Message box|imbox}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude>" wikitext text/x-wiki {{#invoke:Message box|imbox}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4c23c35e3bca07f4a859e7a560d3daf5d612886d 559 558 2023-03-19T23:37:39Z BlindCartographer 2 Protected "[[Template:Imbox]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{#invoke:Message box|imbox}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4c23c35e3bca07f4a859e7a560d3daf5d612886d Template:Attribution 10 202 560 2023-03-19T23:38:17Z BlindCartographer 2 Created page with "{{Imbox | type = license | image = [[file:Commons-emblem-copyright.svg|40px|alt=|link=]] | text = ''The [[Project:Copyrights|copyright]] holder of this file allows anyone to use it for any purpose, provided that the copyright holder is properly attributed. Redistribution, derivative work, commercial use, and all other uses are permitted.'' }} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {{Imbox | type = license | image = [[file:Commons-emblem-copyright.svg|40px|alt=|link=]] | text = ''The [[Project:Copyrights|copyright]] holder of this file allows anyone to use it for any purpose, provided that the copyright holder is properly attributed. Redistribution, derivative work, commercial use, and all other uses are permitted.'' }} <noinclude>{{Documentation}}</noinclude> eefc02f45b15fa4cc492f6b56cc3c9063fef45f0 561 560 2023-03-19T23:42:40Z BlindCartographer 2 Protected "[[Template:Attribution]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Imbox | type = license | image = [[file:Commons-emblem-copyright.svg|40px|alt=|link=]] | text = ''The [[Project:Copyrights|copyright]] holder of this file allows anyone to use it for any purpose, provided that the copyright holder is properly attributed. Redistribution, derivative work, commercial use, and all other uses are permitted.'' }} <noinclude>{{Documentation}}</noinclude> eefc02f45b15fa4cc492f6b56cc3c9063fef45f0 Template:Self 10 203 562 2023-03-19T23:44:24Z BlindCartographer 2 Created page with "{{Imbox | type = license | image = [[file:Image-x-generic.svg|40px|alt=|link=]] | text = ''This file was uploaded by the photographer or author.'' }} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {{Imbox | type = license | image = [[file:Image-x-generic.svg|40px|alt=|link=]] | text = ''This file was uploaded by the photographer or author.'' }} <noinclude>{{Documentation}}</noinclude> ff314b3c574d2b98ffc4c7c42ab06e233af1e552 563 562 2023-03-19T23:45:33Z BlindCartographer 2 Protected "[[Template:Self]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Imbox | type = license | image = [[file:Image-x-generic.svg|40px|alt=|link=]] | text = ''This file was uploaded by the photographer or author.'' }} <noinclude>{{Documentation}}</noinclude> ff314b3c574d2b98ffc4c7c42ab06e233af1e552 Template:Fair use 10 204 564 2023-03-19T23:51:55Z BlindCartographer 2 Created page with "{{Imbox | type = license | image = [[File:PD-icon.svg|60px|alt=|link=]] | text = ''The [[Project:Copyrights|copyright]] holder of this image allows anyone to use it for any purpose including unrestricted redistribution, commercial use, and modification.''<br> <small>This template should not be used for new images. If the image requires attribution, use {{Tlx|Attribution}}. If this is your own work, use {{Tlx|Self}}.</small> }} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {{Imbox | type = license | image = [[File:PD-icon.svg|60px|alt=|link=]] | text = ''The [[Project:Copyrights|copyright]] holder of this image allows anyone to use it for any purpose including unrestricted redistribution, commercial use, and modification.''<br> <small>This template should not be used for new images. If the image requires attribution, use {{Tlx|Attribution}}. If this is your own work, use {{Tlx|Self}}.</small> }} <noinclude>{{Documentation}}</noinclude> 8baf3ca17983b41e16e64ee39373308d79a97f6e Template:Wikimedia commons 10 205 565 2023-03-19T23:56:47Z BlindCartographer 2 Created page with "{{Imbox | type = license | image = [[File:Commons-logo.svg|45px|alt=|link=]] | text = ''This content is a part of the Wikimedia Foundation. Therefore, this content is free for anyone to use. For more information on Wikimedia and it's work, see [https://meta.wikimedia.org/wiki/Wikimedia_Foundation here].'' }} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {{Imbox | type = license | image = [[File:Commons-logo.svg|45px|alt=|link=]] | text = ''This content is a part of the Wikimedia Foundation. Therefore, this content is free for anyone to use. For more information on Wikimedia and it's work, see [https://meta.wikimedia.org/wiki/Wikimedia_Foundation here].'' }} <noinclude>{{Documentation}}</noinclude> 11a59932369cd3969179269ce7c7691c0a011677 566 565 2023-03-19T23:57:15Z BlindCartographer 2 Protected "[[Template:Wikimedia commons]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Imbox | type = license | image = [[File:Commons-logo.svg|45px|alt=|link=]] | text = ''This content is a part of the Wikimedia Foundation. Therefore, this content is free for anyone to use. For more information on Wikimedia and it's work, see [https://meta.wikimedia.org/wiki/Wikimedia_Foundation here].'' }} <noinclude>{{Documentation}}</noinclude> 11a59932369cd3969179269ce7c7691c0a011677 Template:PD 10 206 567 2023-03-19T23:59:41Z BlindCartographer 2 Created page with "{{Imbox | type = license | image = [[File:PD-icon.svg|60px|alt=|link=]] | text = ''This file has been released into the public domain by the [[Project:Copyrights|copyright]] holder, its copyright has expired, or it is ineligible for copyright. This applies worldwide.'' }} <noinclude>{{Documentation}}</noinclude>" wikitext text/x-wiki {{Imbox | type = license | image = [[File:PD-icon.svg|60px|alt=|link=]] | text = ''This file has been released into the public domain by the [[Project:Copyrights|copyright]] holder, its copyright has expired, or it is ineligible for copyright. This applies worldwide.'' }} <noinclude>{{Documentation}}</noinclude> 8f280351a52132d2d5fd93942255fc45bc5d384c MediaWiki:Licenses 8 207 568 2023-03-20T00:01:50Z BlindCartographer 2 Created page with "*Attribution|Needs attribution *Self|I created this image myself *Fair use|The copyright holder allows anybody to use this image *Wikimedia commons|I got this from Wikipedia or another Wikimedia project *PD|This image is in the public domain" wikitext text/x-wiki *Attribution|Needs attribution *Self|I created this image myself *Fair use|The copyright holder allows anybody to use this image *Wikimedia commons|I got this from Wikipedia or another Wikimedia project *PD|This image is in the public domain 5c57ea0ccadf05b147950d21163cc0c2963d24c1 User:BlindCartographer 2 5 569 322 2023-03-20T01:04:32Z BlindCartographer 2 wikitext text/x-wiki {{Userbox group |title=My userboxes |collapse=0 |userboxes= {{Userbox wiki manager}} {{Userbox bureaucrat}} {{Userbox administrator}} }} Heyo, I'm <span title="My real name is Wayne Shepherd">'''BlindCartographer'''</span>, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. Feel free to contact me if you need help with anything! == About Me == I started this wiki on February 6th, 2023, while laying in my bed post-surgery. I had been wanting to find a comprehensive (and encyclopedic) hub for basically everything related to game development, that was engine agnostic. I couldn't find one, so I decided to start one myself. I thought that the best and easiest way would be via a wiki platform due to my experience editing and administrating wikis, and I chose [[meta:Miraheze|Miraheze]] specifically because I hadn't used it before and saw how user-friendly and less restrictive it was compared to Fandom. 7f31f6f3c1fcb8dcc28a497a84827288525f141a 577 569 2023-03-20T02:26:00Z BlindCartographer 2 wikitext text/x-wiki {{Userbox group |title=My userboxes |collapse=0 |userboxes= {{Userbox wiki manager}} {{Userbox bureaucrat}} {{Userbox administrator}} {{Userbox info freedom}} }} Heyo, I'm <span title="My real name is Wayne Shepherd">'''BlindCartographer'''</span>, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. Feel free to contact me if you need help with anything! == About Me == I started this wiki on February 6th, 2023, while laying in my bed post-surgery. I had been wanting to find a comprehensive (and encyclopedic) hub for basically everything related to game development, that was engine agnostic. I couldn't find one, so I decided to start one myself. I thought that the best and easiest way would be via a wiki platform due to my experience editing and administrating wikis, and I chose [[meta:Miraheze|Miraheze]] specifically because I hadn't used it before and saw how user-friendly and less restrictive it was compared to Fandom. 05ef9d0e3a44778247ff07bfbac09f5c33059f5c MediaWiki:Abusefilter-intro 8 35 570 385 2023-03-20T01:09:40Z BlindCartographer 2 wikitext text/x-wiki Welcome to the Abuse Filter management interface. The Abuse Filter is an automated software mechanism of applying automatic heuristics to all actions. This interface shows a list of defined filters, and allows them to be modified. Using the Abuse Filter, authorized users can configure a wide range of tests, which may help identify and prevent potentially harmful edits and other activities before they are added to the wiki, and the automatic actions to be taken. Important: * Make sure you are familiar with the [[GDW:P|wiki rules and policies]]. * Keep an eye on the log. * Check for any false positives. * Use the test filters before creating it individually. Please be careful when editing the abuse filters, as even a single typo can potentially disrupt the editing of thousands of legitimate contributors. It is strongly recommended that you test your filters first before you enable any actions. If you are not sure about something, please ask for help. If you cause problems, you may have your abuse filter editor permission revoked. cfeea88e6ea7d7316fd203a35242b9467e42022e Category:Stubs 14 208 571 2023-03-20T01:33:03Z BlindCartographer 2 Created page with "A list of stubs on the {{SITENAME}}." wikitext text/x-wiki A list of stubs on the {{SITENAME}}. d321476dcc6794a56c65783359007575cbbbe3cf Game Development Wiki:Editing manual 4 157 572 449 2023-03-20T01:48:36Z BlindCartographer 2 wikitext text/x-wiki {{Policy page}} {{Shortcut|{{No redirect|GDW:EM|GDW:EM}} }} Here on the [[GDW:ABT|Game Development Wiki]], we have certain standards and editing customs that should be followed by every editor. This page documents said customs and is a how-to guide on making good and safe edits on the wiki. This guide focuses on edits made in '''source editor''' as it is much neater, and as such all if not most edits should be made in source editor. This guide also goes hand in hand with the [[GDW:P|wiki rules]]. == Page Creation == Before creating a page, please make it on your [[Special:MyPage/Sandbox|sandbox]] page beforehand to make any further edits before fully releasing it. === Page Titles === Titles for pages should only have the first word capitalized (except for certain instances), excluding the namespace of the page. The first instance of the page title on any given page should be in '''bold'''. == General Guidelines == #'''This is a primarily English-speaking wiki'''. All pages and edits must be written in American English. Writing words in the style of British English out of habit will not be punished, but it will be reverted. This is to ensure that the writing on articles remain consistent. Pages should never be written or changed to be translated in another language. This will be reverted. Users of other languages are encouraged to use translating tools such as a translation software to read the pages. #*Examples: <u>favorite</u> over favourite, <u>gray</u> over grey, <u>paralyze</u> over paralyse, <u>defense</u> over defence. #'''Remain in 3rd person'''. Do not use personal pronouns like "I" or "me" or any words that give attention to the editors. Do not use "you" or "we" when referring to readers either. #'''Slang words should rarely be used'''. In almost all situations, formal language is expected to be used when writing or describing things as the wiki aims to be informative. Do not use slang words unless it is in a direct quote. #'''Keep it simple'''. Strive to make the wiki understandable for everyone without having to refer to a dictionary every other sentence. Use simple descriptions, understandable vocabulary and an easy-to-follow structuring that smoothly leads one sentence to the next. This does not mean editors cannot be descriptive or use synonyms to avoid repeating the same word over and over, but remember that word choice matters. Simplicity goes a long way to make reading through an article more enjoyable but variety helps make it interesting too. #'''Keep a neutral point of view'''. All articles should remain as neutral as possible. Do not word anything in a page in a manner that could possibly inject personal biases or viewpoints to the subject. Remain objective as much as possible to present an article's subject fairly and reliably without editorial bias. == Infoboxes == Infoboxes are the rectangular boxes on the right of articles that contain various information. Different infoboxes exist for different things, such as {{Tlx|Infobox programming language}} and {{Tlx|Infobox game engine}}. Almost all main articles should have infoboxes, but not every single one needs them, albeit in rare circumstances. Most of the fields in an infobox should be filled, but if you do not have the information or the info is unnecessary, said info may not need to be added. == Templates == Templates are featured on pages when they are fit. They come in many different shapes and forms, and sometimes have fields that can be filled in. For example; {{Tlx|Delete|reason for deletion}}. A few of the most often used templates and their meaning will be presented below: *{{Tlx|Stub}} - For short pages lacking in information (a byte count of <span class="mw-plusminus-pos">1,200</span>-<span class="mw-plusminus-pos">2,400</span>) *{{Tlx|Delete}} - For pages that break the rules, have under 1,200 bytes, heavily violate the editing manual, etc. Pages with under 1,000 bytes have 24 hours to gain enough bytes before deletion. *{{Tlx|Cleanup}} - For pages that violate the editing tutorial in a non-extreme way. If a page stays a candidate for cleanup for too long, it may become a candidate for deletion. == Categories == Do not add unapproved categories or random and irrelevant categories to pages. A full list of categories can be found at [[Special:Categories]]. New categories can be proposed [[Project:Requests for categories|here]]. == Talk Pages == Every user should always sign their messages by putting four tildes (<nowiki>~~~~</nowiki>) at the end of the message. You should reply to message by either leaving a response on the messengers talk page, or by replying on your own wall. == Use of Wikipedia == We do not allow the direct copy and pasting or plagiarism of wikipedia articles or articles from other wikis. Using information provided in said articles is acceptable, but plagiarism is not. == Other editing manuals == * [[Project:Editing manual/Tutorial manual|Tutorial article manual]] * [[Project:Editing manual/Voting guide|Guide on voting]] [[Category:{{SITENAME}}]] 2acaeca0486b623fb3291a0f45fe46a87bda4180 Template:Userbox vandalism reverter 10 209 573 2023-03-20T02:03:24Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Nuvola search person.png|43px|link=Project:Administrators]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info-background = #DFE8FF | logo-background = #b5caff | border-color = | info = This user likes to searches for vandalism in articles and revert them. }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Adminstrators]]</includeonly>" wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Nuvola search person.png|43px|link=Project:Administrators]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info-background = #DFE8FF | logo-background = #b5caff | border-color = | info = This user likes to searches for vandalism in articles and revert them. }} </span> <noinclude>[[Category:Userboxes]]</noinclude> <includeonly>[[Category:Adminstrators]]</includeonly> 902c354452856decfc797a528d2c782530b61c31 574 573 2023-03-20T02:03:39Z BlindCartographer 2 wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Nuvola search person.png|43px|link=Project:Administrators]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info-background = #DFE8FF | logo-background = #b5caff | border-color = | info = This user likes to searches for vandalism in articles and revert them. }} </span> <noinclude>[[Category:Userboxes]]</noinclude> 29eaf05654aa1d1320a11429c20c179e1ec1b521 Category:Userboxes 14 210 575 2023-03-20T02:03:58Z BlindCartographer 2 Created page with "The list of all userboxes on the {{SITENAME}}." wikitext text/x-wiki The list of all userboxes on the {{SITENAME}}. 0511011f5db091f3582076a72094ec00731eba14 Template:Userbox info freedom 10 211 576 2023-03-20T02:07:14Z BlindCartographer 2 Created page with "{{Userbox |border-c = #000 |border-s = 1 |id-c = black |id-s = 12 |id-fc = #000 |info-c = black |info-s = 8 |info-fc = white |info-a = center |id = [[File:PD-icon.svg|45px|link=]] |info = This user believes in freedom of <b>all types of information</b> for all. }}<noinclude> [[Category:Userboxes]] </noinclude>" wikitext text/x-wiki {{Userbox |border-c = #000 |border-s = 1 |id-c = black |id-s = 12 |id-fc = #000 |info-c = black |info-s = 8 |info-fc = white |info-a = center |id = [[File:PD-icon.svg|45px|link=]] |info = This user believes in freedom of <b>all types of information</b> for all. }}<noinclude> [[Category:Userboxes]] </noinclude> b586b03eda40139b5fe8116cfb4ab3ce3cf18646 Module:Message box/ombox.css 828 81 578 201 2023-03-20T17:11:31Z BlindCartographer 2 sanitized-css text/css /* {{pp|small=y}} */ .ombox { margin: 4px 0; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } /* For the "small=yes" option. */ .ombox.mbox-small { font-size: 88%; line-height: 1.25em; } .ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } .ombox-delete { border: 2px solid #b32424; /* Red */ } .ombox-note { border: 1px solid #3366CC; /* Blue */ } .ombox-content { border: 1px solid #f28500; /* Orange */ } .ombox-style { border: 1px solid #fc3; /* Yellow */ } .ombox-move { border: 1px solid #9932cc; /* Purple */ } .ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } .ombox .mbox-text { border: none; /* @noflip */ padding: 0.25em 0.9em; width: 100%; } .ombox .mbox-image { border: none; /* @noflip */ padding: 2px 0 2px 0.9em; text-align: center; } .ombox .mbox-imageright { border: none; /* @noflip */ padding: 2px 0.9em 2px 0; text-align: center; } /* An empty narrow cell */ .ombox .mbox-empty-cell { border: none; padding: 0; width: 1px; } .ombox .mbox-invalid-type { text-align: center; } @media (min-width: 720px) { .ombox { margin: 4px 10%; } .ombox.mbox-small { /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; width: 238px; } } 0cb724ff697fd930321bd501a960e945bd8d64b7 Module:Message box/configuration 828 19 579 435 2023-03-20T17:13:31Z BlindCartographer 2 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' }, wikinotice = { class = 'ambox-wikinotice', image = 'Site-Icon.png' }, void = { class = 'ambox-void', image = 'Ambox padlock red.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>', templatestyles = 'Module:Message box/ambox.css' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true, templatestyles = 'Module:Message box/cmbox.css' }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false, templatestyles = 'Module:Message box/fmbox.css' }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes', templatestyles = 'Module:Message box/imbox.css' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' }, note = { class = 'ombox-note', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true, templatestyles = 'Module:Message box/ombox.css' }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, templateCategory = 'Talk message boxes', templatestyles = 'Module:Message box/tmbox.css' } } 460d002b011eb07455e0275007eeba92488a508b Template:Mbox/styles.css 10 79 580 436 2023-03-20T17:18:09Z BlindCartographer 2 sanitized-css text/css /** @source http://en.wikipedia.org/wiki/MediaWiki:Common.css | 2020-02-03 */ /** [[Module:Message box]] */ /* * WARNING * Some wikis use the styles located here in their local CSS with an import * directive. Do not remove classes from this page until those wikis have * transitioned to TemplateStyles. MediaWiki wiki uses TemplateStyles and does * not load this gadget; see Module:Message box for more details. */ /** NOTE: These do not include .messagebox styles, which are long-deprecated. */ /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } table.ambox-wikinotice { /* @noflip */ border-left: 10px solid #008000; /* Green */ } table.ambox-void { /* @noflip */ border-left: 10px solid #000000; /* Black */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } table.ombox-note { border: 1px solid #3366CC; /* Blue */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } 84a9276f81596a0112ac4570b1df5a1a063d7a0e Template:Copyright page 10 198 581 550 2023-03-20T17:18:20Z BlindCartographer 2 wikitext text/x-wiki {{Ombox |type=note |image=[[File:Ambox copyright blue.svg|45px|link=Project:Copyrights]] |text=<center>'''This {{{ns|page}}} concerns legal or [[Project:Copyrights|wiki copyright policies.]]'''</center> The content of this {{{ns|page}}} details and documents information relating to copyright laws and policies that are used on the {{SITENAME}}. Changes to the information pertaining to copyright proceedings should not be changed unless the policy or law changes. }} <noinclude>[[Category:Templates]]</noinclude> ed0feb411e791c6ea002c6716d5a652bebd5a43f Template:MP-Main 10 38 582 546 2023-03-20T19:18:02Z BlindCartographer 2 wikitext text/x-wiki {{Nbox |border=#2C670F |background=#F8FFF5 |header=<div style="font-size:180%; font-family: Righteous">'''Welcome to the Game Development Wiki!'''</div> |text=The '''Game Development Wiki''' (better known as the '''Gamedev wiki''') is a collaborative encyclopedia used to store and collect knowledge about the past, present, and future of game development. Before starting, please read the [[GDW:P|Rules]] and [[GDW:EM|Editing Manual]]. Thank you! *Have a question? Visit the [[Special:WikiForums|Forums]]! *Have something to report to the admins? Visit the [[Project:Administrator Noticeboard|Administrator Noticeboard]]. *Want to see who the administrators are? Find out [[project:Administrators|here]]. *Looking for something to do? See what's happening down at the [[Project:Community portal|Community portal]]. *Want to see what's happened at the wiki recently? See the '''[[Special:RecentChanges|RecentChanges]]''' page. ''We are NOT a source of advertisement, promotion, or anything of the sort. We are a wiki, a place to store information. We do not accept low-quality articles or posts that exist solely to advertise.'' <div style="text-align:right;">[[Special:CreatePage|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Create an article</span>]] [[Special:Random|<span class="mw-ui-button mw-ui-progressive mw-ui-small">Random page</span>]]</div> }} ab0fcd66c3220f8952a9a7d327271b6818026715 Module:Babel 828 212 583 2023-03-20T19:58:10Z BlindCartographer 2 Created page with "local p = {} local getArgs local function showUserbox(frame, v, nocat) local maybeNocat = '' if nocat then maybeNocat = '|nocat=yes' end return frame:preprocess('{{User '..v..maybeNocat..'}}') end function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end local args = getArgs(frame, {wrappers = 'Template:Babel'}) local ret = mw.html.create('table') :attr('role', 'presentation') :addClass('userboxes') :css( {..." Scribunto text/plain local p = {} local getArgs local function showUserbox(frame, v, nocat) local maybeNocat = '' if nocat then maybeNocat = '|nocat=yes' end return frame:preprocess('{{User '..v..maybeNocat..'}}') end function p.main(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end local args = getArgs(frame, {wrappers = 'Template:Babel'}) local ret = mw.html.create('table') :attr('role', 'presentation') :addClass('userboxes') :css( { float = args.align or 'right', ['margin-left'] = (args.left or '1') .. 'em', ['margin-bottom'] = (args.bottom or '0') .. 'em', width = (args.width or '248') .. 'px', clear = args.align or 'right', color = args.textcolor or '#000000', border = (args.bordercolor or '#99B3FF') .. ' solid ' .. (args.solid or 1)..'px' } ) local nocat = args.nocat and string.lower(args.nocat) == 'yes' if args.shadow and string.lower(args.shadow) == 'yes' then ret:css({ ['box-shadow'] = '0 2px 4px rgb(0,0,0,0.2)' }) end ret:cssText( args['extra-css'] or '' ) local color = args.color or 'inherit' local row1 = ret:tag('tr') local row2 = ret:tag('tr') local row3 = ret:tag('tr') local body_cells = row2:tag('td') :css('vertical-align', 'middle !important') local userboxes -- Special message for when first argument is blank; otherwise treat it as normal if args[1] and args[1]:find('%S') then userboxes = showUserbox(frame, args[1], nocat) else userboxes = args.noboxestext or "''You haven't set up any languages. Please see [[Template:Babel/doc]] for help.''" end body_cells:wikitext(userboxes) -- "remove" args[1] so it isn't looked at in the loop -- table.remove(args,1) doesn't produce desired result args[1] = '' -- Keep track of how many columns are in this table local col_span = 1 for _, v in ipairs( args ) do -- ! indicates a new cell should be created if v:find('%S') and v ~= '!' then body_cells:wikitext( showUserbox(frame, v, nocat) ) -- Recycling body_cells for <td> elseif v and v == '!' then col_span = col_span + 1 body_cells:done() body_cells = row2:tag('td') end end row1:tag('th') :css({ ['background-color'] = color, ['text-align'] = 'center' }) :attr('colspan',col_span) :done() row3:tag('td') :css({ ['background-color'] = color, ['text-align'] = 'center' }) :attr('colspan',col_span) :done() if args['special-boxes'] then body_cells:wikitext(args['special-boxes']) end body_cells:done() return tostring(ret) end return p 564af4a85e6b02721adfc064906c992922a093bb Template:Babel 10 213 584 2023-03-20T19:59:06Z BlindCartographer 2 Created page with "{{#invoke:Babel|main}}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude>" wikitext text/x-wiki {{#invoke:Babel|main}}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 11ad8c706dcedbfd244a9cf84a35e442e313a8dc Template:UsernameBlock 10 214 585 2023-03-20T20:34:20Z BlindCartographer 2 Created page with "{{Tmbox |image = [[File:Stop x nuvola.svg|45px]] |text = '''An editor has suggested that this [[Project:Policy#Usernames|choice of username]] may be inappropriate. The username appears to be misleading, profane, offensive, disruptive, promotional or suggests that you do not wish to improve articles or other pages on the wiki. It is possible that an [[Project:Administrators|administrator]] may decide to [[Project:Policy/Blocking policy|block]] this account for that reason..." wikitext text/x-wiki {{Tmbox |image = [[File:Stop x nuvola.svg|45px]] |text = '''An editor has suggested that this [[Project:Policy#Usernames|choice of username]] may be inappropriate. The username appears to be misleading, profane, offensive, disruptive, promotional or suggests that you do not wish to improve articles or other pages on the wiki. It is possible that an [[Project:Administrators|administrator]] may decide to [[Project:Policy/Blocking policy|block]] this account for that reason.''' Please discuss this here on your '''talk page'''. }}<noinclude> {{Documentation}} [[Category:User block templates|{{PAGENAME}}]] </noinclude> 5903e2283a9d205c33b9388409dad38c7d9ffffa Game Development Wiki:Blocking policy 4 215 586 2023-03-20T20:36:01Z BlindCartographer 2 Redirected page to [[Game Development Wiki:Policy/Blocking policy]] wikitext text/x-wiki #REDIRECT [[Project:Policy/Blocking policy]] bb63c3cfb44e887c4dd1b3e981f3478fc8036626 587 586 2023-03-20T20:36:11Z BlindCartographer 2 Protected "[[Game Development Wiki:Blocking policy]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki #REDIRECT [[Project:Policy/Blocking policy]] bb63c3cfb44e887c4dd1b3e981f3478fc8036626 Template:Ivmbox 10 216 588 2023-03-20T20:51:24Z BlindCartographer 2 Created page with "<div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{{{|safesubst:}}}#invoke:InfoboxImage|Infobox..." wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{{{|safesubst:}}}#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{2}}}}}}|size={{{imagesize|25px}}}|maxsize=100px|link={{{image link|}}}|alt={{{image alt|}}}}}</div>}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> d9b69dfe3049dd31ff1b91e3acbde0de087bc910 589 588 2023-03-20T20:51:34Z BlindCartographer 2 Protected "[[Template:Ivmbox]]" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{{{|safesubst:}}}#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{2}}}}}}|size={{{imagesize|25px}}}|maxsize=100px|link={{{image link|}}}|alt={{{image alt|}}}}}</div>}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> d9b69dfe3049dd31ff1b91e3acbde0de087bc910 590 589 2023-03-20T20:56:29Z BlindCartographer 2 wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{image|{{{2}}}}}}}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> 0b452c7b1fc77d991e087b267e5971a77ebf54ee 591 590 2023-03-20T20:57:13Z BlindCartographer 2 wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{image|{{{2}}}}}}}}</div> <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> fdb24d8f8b80dffad2692af24ec3e59c74dac157 592 591 2023-03-20T20:57:32Z BlindCartographer 2 Undo revision 591 by [[Special:Contributions/BlindCartographer|BlindCartographer]] ([[User talk:BlindCartographer|talk]]) wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{image|{{{2}}}}}}}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> 0b452c7b1fc77d991e087b267e5971a77ebf54ee 593 592 2023-03-20T20:58:01Z BlindCartographer 2 wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{{{|safesubst:}}}#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{2}}}}}}|size={{{imagesize|25px}}}|maxsize=100px|link={{{image link|}}}|alt={{{image alt|}}}}}</div>}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> d9b69dfe3049dd31ff1b91e3acbde0de087bc910 594 593 2023-03-20T21:00:06Z BlindCartographer 2 wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}}|<div class="ivmbox-image" style="padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}}; flex: 1 0 {{{imagesize|25px}}}; max-width: 100px">{{{{{|safesubst:}}}#invoke:IvmBoxImage|IvmboxImage|image={{{image|{{{2}}}}}}|size={{{imagesize|25px}}}|maxsize=100px|link={{{image link|}}}|alt={{{image alt|}}}}}</div>}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> 538df2c27abcb25859b22a28db43b18bada05431 595 594 2023-03-20T21:06:42Z BlindCartographer 2 wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{image|}}} <div class="ivmbox-text"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> 6b26cac0bb5ce55eea352d7de5e0598a7f3c18cd 596 595 2023-03-20T21:08:17Z BlindCartographer 2 wikitext text/x-wiki <div class="ivmbox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="margin-bottom: 1em; border: 1px solid {{{border|#AAA}}}; background-color: {{{bg|ivory}}}; padding: 0.5em; display: flex; align-items: center; {{{extracss|}}}"> {{{image|}}} <div class="ivmbox-text" style="padding-left: 0.5em;"> {{{text|{{{1}}}}}} </div> </div><noinclude> {{Documentation}} </noinclude> 039d93d42ba31cf1d4fe60a24ce21618edb8d070 Template:Blockeduser 10 217 597 2023-03-20T21:28:53Z BlindCartographer 2 Created page with "{{Ivmbox |image= [[File:Stop_hand_nuvola.svg|45px|link=Project:Blocking policy]] |text= '''You have been temporarily blocked from the {{SITENAME}}.''' The reason you have been blocked is is ''"{{{rsn|reason}}}"''. If you think there are good reasons why you should be unblocked, you may request an unblock by first reading the [[Project:Policy/Blocking policy#Appeals|guide to appealing blocks]], then adding the following text to the bottom of your talk page: <code><nowiki>..." wikitext text/x-wiki {{Ivmbox |image= [[File:Stop_hand_nuvola.svg|45px|link=Project:Blocking policy]] |text= '''You have been temporarily blocked from the {{SITENAME}}.''' The reason you have been blocked is is ''"{{{rsn|reason}}}"''. If you think there are good reasons why you should be unblocked, you may request an unblock by first reading the [[Project:Policy/Blocking policy#Appeals|guide to appealing blocks]], then adding the following text to the bottom of your talk page: <code><nowiki>{{Unblock|reason=Your reason here ~~~~}}.</nowiki></code> ~~<noinclude />~~ }} <noinclude> {{Documentation}} [[Category:User block templates]] </noinclude> c17bf445c153e7a60e3a63b8007e72dd4439e627 599 597 2023-03-20T21:38:05Z BlindCartographer 2 wikitext text/x-wiki {{Ivmbox |image= [[File:Stop_hand_nuvola.svg|45px|link=Project:Blocking policy]] |text= '''You have been temporarily blocked from the {{SITENAME}}.''' The reason you have been blocked is is ''"{{{rsn|reason}}}"''. If you think there are good reasons why you should be unblocked, you may request an unblock by first reading the [[Project:Policy/Blocking policy#Block Appeals|guide to appealing blocks]], then adding the following text to the bottom of your talk page: <code><nowiki>{{Unblock|reason=Your reason here ~~~~}}.</nowiki></code> ~~<noinclude />~~ }} <noinclude> {{Documentation}} [[Category:User block templates]] </noinclude> 4c846deda55ce9c36d7dc76f7cfef79695355685 MediaWiki:Ipbreason-dropdown 8 218 598 2023-03-20T21:35:33Z BlindCartographer 2 Created page with "*Common block reasons **Vandalism **Spam **Inserting false information **Removing content from pages **Spamming links to external sites **Inserting nonsense/gibberish into pages **Intimidating behavior/harassment **Abusing multiple accounts **Sockpuppet account **Sockpuppetry **Unacceptable username **General disruption **Edit-warring **Trolling **Impersonation **Extreme disruption **Repeated abuse **Underaged **Uploading graphic/explicit content **Inappropriate comments..." wikitext text/x-wiki *Common block reasons **Vandalism **Spam **Inserting false information **Removing content from pages **Spamming links to external sites **Inserting nonsense/gibberish into pages **Intimidating behavior/harassment **Abusing multiple accounts **Sockpuppet account **Sockpuppetry **Unacceptable username **General disruption **Edit-warring **Trolling **Impersonation **Extreme disruption **Repeated abuse **Underaged **Uploading graphic/explicit content **Inappropriate comments **Copyright violations 78ae42cf9520bf3780b448bc9768e0a6d7c5599b Template:Biased article 10 140 600 391 2023-03-20T21:46:03Z BlindCartographer 2 wikitext text/x-wiki {{Ambox | type = content | image = [[File:Ambox scales.svg|45px|link=Category:Biased articles]] | text = <center>'''This article may be biased!'''</center> This article may contain wording or false information biased towards a specific parties point of view. [{{fullurl:{{FULLPAGENAME}}|action=edit}} please correct the wording of this article] to make it more neutral. }} <includeonly>[[Category:Biased articles]]</includeonly> <noinclude>{{Documentation}} [[Category:Article management templates]]</noinclude> 5892146e543f3a536c7ef632c319d39070d5b42b Game Development Wiki:Policy/Facts policy 4 219 601 2023-03-20T22:14:08Z BlindCartographer 2 Created page with "{{Policy page}} [[File:Ambox scales.svg|50px|right|link=]] One of the core fundamentals of the {{SITENAME}} is our prioritization to keep our information and articles as truthful and unbiased as possible. Our '''Facts policy''' ensures all content on articles is '''factual''' and '''well sourced'''. This is critical as content can sometimes be sensitive, causing offense to many individuals are associated with the content. The {{SITENAME}} is a '''wiki''', which means pe..." wikitext text/x-wiki {{Policy page}} [[File:Ambox scales.svg|50px|right|link=]] One of the core fundamentals of the {{SITENAME}} is our prioritization to keep our information and articles as truthful and unbiased as possible. Our '''Facts policy''' ensures all content on articles is '''factual''' and '''well sourced'''. This is critical as content can sometimes be sensitive, causing offense to many individuals are associated with the content. The {{SITENAME}} is a '''wiki''', which means personal opinion should not be used on wiki articles. 982a9b795ada4fb0a6cb294e621e5813768082a1 602 601 2023-03-20T22:14:19Z BlindCartographer 2 Protected "[[Game Development Wiki:Policy/Facts policy]]": Important to wiki ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) wikitext text/x-wiki {{Policy page}} [[File:Ambox scales.svg|50px|right|link=]] One of the core fundamentals of the {{SITENAME}} is our prioritization to keep our information and articles as truthful and unbiased as possible. Our '''Facts policy''' ensures all content on articles is '''factual''' and '''well sourced'''. This is critical as content can sometimes be sensitive, causing offense to many individuals are associated with the content. The {{SITENAME}} is a '''wiki''', which means personal opinion should not be used on wiki articles. 982a9b795ada4fb0a6cb294e621e5813768082a1 User:BlindCartographer 2 5 603 577 2023-03-22T01:10:27Z BlindCartographer 2 wikitext text/x-wiki {{Userbox group |title=My userboxes |collapse=0 |userboxes= {{Userbox wiki manager}} {{Userbox bureaucrat}} {{Userbox administrator}} {{Userbox info freedom}} }} Heyo, I'm <span title="My real name is Wayne Shepherd">'''BlindCartographer'''</span>, the founder of this wiki, along with being a [[Project:Staff#Bureaucrat|bureaucrat]] and the wiki manager around here. Feel free to contact me if you need help with anything! == About Me == I started this wiki on February 6th, 2023, while laying in my bed post-surgery. I had been wanting to find a comprehensive (and encyclopedic) hub for basically everything related to game development, that was engine agnostic. I couldn't find one, so I decided to start one myself. I thought that the best and easiest way would be via a wiki platform due to my experience editing and administrating wikis, and I chose [[meta:Miraheze|Miraheze]] specifically because I hadn't used it before and saw how user-friendly and less restrictive it was compared to Fandom. == Pages I've Created == *Almost every single MediaWiki, Project, and Template page on the wiki. *[[Gdscript]] 8e05f4b3573482b22e268428f9a1992d282f9d8e Template:User wikiware upkeep 10 220 604 2023-03-25T22:37:29Z BlindCartographer 2 Created page with "<span style="margin: auto;"> {{Userbox | id = [[File:Nuvola apps kfloppy.png|43px|link=]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info-background = #DFE8FF | logo-background = #b5caff | border-color = | info = This user actively maintains the wiki software and database. }} </span> <noinclude>[[Category:Userboxes]]</noinclude>" wikitext text/x-wiki <span style="margin: auto;"> {{Userbox | id = [[File:Nuvola apps kfloppy.png|43px|link=]] | info-s = {{{info-s|{{{info-size|8}}}}}} | info-background = #DFE8FF | logo-background = #b5caff | border-color = | info = This user actively maintains the wiki software and database. }} </span> <noinclude>[[Category:Userboxes]]</noinclude> 67901d6eba0700a2f1883ead886c15bd8b7d4860 Game Development Wiki:Frequently Asked Questions 4 193 605 556 2023-07-15T03:33:36Z BlindCartographer 2 wikitext text/x-wiki <tabs> <tab name="General> {{Shortcut|{{No redirect|GDW:FAQ|GDW:FAQ}} }} === What is this place? === Welcome to the [[GDW:ABT|{{SITENAME}}]], a community built wiki dedicated to all things related to game development, that operates using the latest version of [[mw:MediaWiki|MediaWiki]] and is hosted on [[meta:Special:MyLanguage/Miraheze|Miraheze]]. === How can I join? === In order to join the wiki, you must first [[Special:CreateAccount|create an account]]. After you've done that or you already have a Miraheze account, you've officially joined the wiki. Make sure to read the [[GDW:P|wiki rules]] and [[GDW:EM|editing manual]] before getting started. You don't need an account to edit, however anonymous editing will have your username be displayed as your [[wikipedia:IP address|IP address]]. === What can I expect to find here? === The main type of content we have are articles that document anything and everything related to game development, and [[Project:Tutorial articles|tutorial articles]] that offer comprehensive guides and advice for game development. === Can I add an article about my video game? === Unfortunately, we do not allow articles about individual games. However, if you own or are a member of an indie game development studio, you may add an article about your studio. === How old do I have to be to use this wiki? === You must be a minimum of 13 years old in order to edit or use the wiki. If you are found to be underage, you will be banned. It should be noted that you don't need to be 13 or older to read the wiki, only interact with it. </tab> <tab name="Editing"> === How do I start editing? === In order to edit a page, you can click the "Edit" or "Edit source" buttons in the top right corner next to the search bar in order to begin editing a page. Please read the [[GDW:EM|editing manual]] and [[GDW:P|policies]] before you begin editing. === Can I create an article? === Sure! Anybody can. Just make sure you create it in your [[Special:MyPage/sandbox|user sandbox]] before posting it to the wiki. If it gets deleted, do not repost it. Instead, visit [[Project:Requests for undeletion|here]] instead. </tab> <tab name="Staff"> === Where can I find the wiki staff? === You can find the list of wiki staff [[Project:Staff|here]]. </tab> <tab name="Forums"> === Why are the forums disabled? === Unfortunately, the forums are temporarily disabled due to a security exploit bug. The forums will remain disabled until the bug has been fixed. === Is there an alternative? === We currently have a [https://discord.gg/6y5ytRBK discord server] we encourage you to use for the purposes of wiki related discussion. </tab> <tab name="Other"> === I've been blocked! What do I do? === If you've been blocked on the wiki, it was probably for a good reason. However, if you would like to appeal your block, and believe it was unfair, a mistake, or otherwise unneeded, you may leave an unblock request on your talk page (assuming you still have access to it) to be reviewed by an administrator. You can do so by adding <nowiki>{{Unblock|(insert reason here) ~~~~}}</nowiki> and replacing (insert reason here) with your reason. For a more in-depth guide on block appeals, read [[Project:Policy/Blocking policy#Block Appeals|this]]. === Do you have any social media, chat platforms, or other methods of contact? === At the moment we do not have any social media accounts or dedicated chat platforms such as Discord. === Do you have non-english versions of the wiki? === At the moment, the only version of the {{SITENAME}} is in english. === I have found something that violates the copyright policy === If you have found content on the wiki that violates the CC BY-SA 4.0 license or the [[Project:Copyrights|wiki copyright policy]], please report it to a [[Project:Moderation|moderator]], [[Project:Administrators|administrator]], or a [[Project:Staff#Bureaucrat|bureaucrat]] on their talk page. Make sure to do so by using the {{Tlx|Copyright takedown}} template. </tab> </tabs> [[Category:{{SITENAME}}]] 794f587275ee0191269c2614dd445afe97991d76